🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Gatsby

Gatsbyとは、Reactベースの静的サイトジェネレータ。最新のフロントエンド技術を活かし、機能豊富なWebサイトやアプリケーションを作ることが可能です。GraphQLを用いてあらゆるソースからサイトのデータを取得。指定した設定に基づいて静的サイトを構築することができます。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

2回答

3074閲覧

Gatsby内のReactの文字列の結合のやり方について

j11

総合スコア2

Gatsby

Gatsbyとは、Reactベースの静的サイトジェネレータ。最新のフロントエンド技術を活かし、機能豊富なWebサイトやアプリケーションを作ることが可能です。GraphQLを用いてあらゆるソースからサイトのデータを取得。指定した設定に基づいて静的サイトを構築することができます。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2020/12/29 07:48

編集2020/12/31 08:44

#知りたいこと
Gatsby内のReactの文字列の結合ついてです。
#やってみたこと
ソースコードはざっくりです。

js

1const Example = ({ word1, word2 }) => { 2 return ( 3 <img src={"https://example.maxcdn.com/" + {word1} + ".jpg" } alt={word2} /> 4 .... 5 ); 6};

js

1const Test = ({ location }) => { 2 return ( 3 <Example word1="ファイル名1" word2="説明1" /> 4 <Example word1="ファイル名2" word2="説明2" /> 5 .... 6 ); 7}; 8

####出力結果

HTML

1<img src="https://example.maxcdn.com/[object Object].jpg" alt="説明1"> 2<img src="https://example.maxcdn.com/[object Object].jpg" alt="説明2"> 3....

どっから"[object Object]"が出ているのかわかりませんでした。
####望んでいる出力結果

HTML

1<img src="https://example.maxcdn.com/ファイル名1.jpg" alt="説明1"> 2<img src="https://example.maxcdn.com/ファイル名2.jpg" alt="説明2"> 3....

#補足情報
初心者すぎて当たり前のことがわからないのでその点よろしくお願いします。

####追記:実際のコード(解決後削除予定)
削除済み

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

A_kirisaki

2020/12/29 10:58

コンポーネントの引数が Word1, Word2 で 参照先が小文字になってますがそれはタイポですか?
j11

2020/12/29 12:49

タイポですね。ご指摘ありがとうございます。修正します。 念のため実際のコードを、再度確認&コードフォーマッターを使ってみましたがタイポは見つかりませんでした。
A_kirisaki

2020/12/29 12:53

その word1, word2 は何が入ってきてるかわかりますか?もしくは呼び出し元のコードも見せていただけますか?
j11

2020/12/30 02:13

一応見せれるところは上げときます。
guest

回答2

0

#自分が行った解決方法
itepechiさんの回答を基にして以下のようなコードを試してみたところ正常に動作しました。

js

1const CategoryLink = ({ word1, word2 }) => { 2 return ( 3 <img src={`https://example.maxcdn.com/${word1}.jpg`} alt={word2} /> 4 .... 5 ); 6};

js

1const Test = ({ location }) => { 2 return ( 3 <Example word1="ファイル名1" word2="説明1" /> 4 <Example word1="ファイル名2" word2="説明2" /> 5 .... 6 ); 7};

####変更点

  • 変更前<img src={"https://example.maxcdn.com/" + {word1} + ".jpg" alt={word2} /}
  • 変更後<img src={'https://example.maxcdn.com/${word1}.jpg'} alt={word2} />

**注意 マークダウンが機能しないので実際には`(グレイヴ・アクセント)**だが上のコードは'(アポストロフィー)に置換。

投稿2020/12/31 09:37

編集2020/12/31 09:39
j11

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

<img src={"https://example.maxcdn.com/" + {word1} + ".jpg" ...

{word1}はオブジェクトです。

js

1const word1 = "test"; 2 3const foo = {word1}; // {word1: word1} の省略記法 4 5console.log(typeof foo); // "object"

文字列にオブジェクトを連結しようとしているため、Object.prototype.toString()が呼び出され、"[object Object]"に変換されています。

{...}を取り払うか、テンプレートリテラルで挿入しましょう。

js

1const word1 = "test"; 2 3// テンプレートリテラルで挿入(推奨) 4const a = `https://example.maxcdn.com/${word1}.jpg`; 5 6// 加算演算子で連結 7const b = "https://example.maxcdn.com/" + word1 + ".jpg"; 8 9console.log(a, b); // "https://example.maxcdn.com/test.jpg" "https://example.maxcdn.com/test.jpg"

投稿2020/12/31 06:46

編集2020/12/31 06:49
itepechi

総合スコア248

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問