JSX に波括弧で JavaScript を含める
JSX により、JavaScript ファイル内に HTML のようなマークアップを書いて、レンダリングロジックとコンテンツを同じ場所にまとめられるようになります。ときに、そのマークアップの中で JavaScript のロジックを書いたり動的なプロパティを参照したりしたくなることがあります。このような場合、JSX 内で波括弧を使うことで、JavaScript への入り口を開くことができます。
このページで学ぶこと
- 引用符を使って文字列を渡す方法
- 波括弧を使って JSX 内で JavaScript 変数を参照する方法
- 波括弧を使って JSX 内で JavaScript 関数を呼び出す方法
- 波括弧を使って JSX 内でオブジェクトを利用する方法
引用符で文字列を渡す
JSX に文字列の属性を渡したい場合、それをシングルクオートかダブルクオートで囲みます。
export default function Avatar() { return ( <img className="avatar" src="https://react.dev/images/docs/scientists/7vQD0fPs.jpg" alt="Gregorio Y. Zara" /> ); }
この例では "https://react.dev/images/docs/scientists/7vQD0fPs.jpg" と "Gregorio Y. Zara" が文字列として渡されています。
では src や alt のテキストを動的に指定したい場合はどうすればいいのでしょう? " と " を { と } に置き換えることで、JavaScript の値を使うことができるのです。
export default function Avatar() { const avatar = 'https://react.dev/images/docs/scientists/7vQD0fPs.jpg'; const description = 'Gregorio Y. Zara'; return ( <img className="avatar" src={avatar} alt={description} /> ); }
className="avatar" は "avatar" という CSS クラス名を指定して画像を円形にしており、src={avatar} は avatar という名前の JavaScript 変数を読み出している、という違いに注意してください。波括弧を使うことで、マークアップの中で直接 JavaScript を使えるようになるからです。
波括弧は JavaScript 世界への窓口
JSX とは JavaScript を書く特殊な方法のひとつです。つまりその中で JavaScript が使えるということであり、そのための手段が波括弧 {} です。以下の例では、とある科学者の名前を name として宣言し、それを <h1> 内に波括弧を使って埋め込んでいます。
export default function TodoList() { const name = 'Gregorio Y. Zara'; return ( <h1>{name}'s To Do List</h1> ); }
name の値を 'Gregorio Y. Zara' から 'Hedy Lamarr' にしてみてください。To Do リストのタイトルが変わりましたか?
波括弧の中では formatDate() のような関数呼び出しも含む、あらゆる JavaScript の式が動作します。
const today = new Date(); function formatDate(date) { return new Intl.DateTimeFormat( 'en-US', { weekday: 'long' } ).format(date); } export default function TodoList() { return ( <h1>To Do List for {formatDate(today)}</h1> ); }