【入門編】 JSXにおける属性とPropsの受け渡し – React実践ガイド

こんにちは。フロントエンドの迷宮へようこそ。

Reactの世界に足を踏み入れたばかりの頃って、HTMLと似ているようで微妙に違う「JSX」というやつに、いきなり肩透かしを食らったりしませんか?「あれ、`class`って書いたのに反映されないぞ?」とか、「この波括弧 `{ }` は一体なんなんだ?」とか。

大丈夫、安心してください。それはあなたが間違っているのではなく、Reactという「魔法の道具」のルールを一つずつ学んでいる証拠です。今日は、そんなJSXの「属性とPropsの受け渡し」という最初の難関を、肩の力を抜いて一緒に紐解いていきましょう。

—

1. 「HTML」と「JSX」の微妙な距離感

HTMLを書くとき、私たちはタグに属性をつけますよね。例えば `

` のように。でも、Reactで同じことをやろうとすると、少し様子が違います。

なぜ `class` ではなく `className` なのか?

一番最初にぶつかる壁がこれです。なぜ `class` と書かせてくれないのか。
理由はシンプルで、`class` はJavaScriptそのものが持っている「予約語」だからです。プログラミング言語の文法としてすでに「ここにはクラス定義を書くよ!」と決まっている場所に、HTMLの属性を混ぜると、コンピュータが混乱してしまいます。

だから、Reactは「じゃあ、HTMLのクラス属性は `className` って呼ぶことにしよう!」と決めたんです。同じように、フォームのラベルで使う `for` 属性も、JavaScriptのループ処理と被ってしまうので `htmlFor` になっています。

「あ、これはJSの世界にHTMLをお邪魔させているんだな」 と思えば、この命名規則も少し愛おしく感じられませんか?

—

2. JavaScriptの世界へようこそ:波括弧 `{ }` の魔法

JSXの最大の特徴は、「HTMLの中にJavaScriptの変数をそのまま埋め込める」という点です。ここで登場するのが波括弧 `{ }` です。

これを「お買い物」に例えてみましょう。

  • 普通の文字列を渡すときは、`” “`(クォーテーション)で囲みます。これは「ただの商品ラベル」です。
  • JavaScriptの変数や計算式を渡すときは、`{ }` で囲みます。これは「中身が何に変わるかわからない、魔法の小箱」です。

function UserProfile() {
const userName = “田中さん”; // ユーザーの名前という変数
const isOnline = true; // オンライン状態かどうかというフラグ

return (

{/ 文字列はそのままクォーテーションで /}

プロフィール画面

{/ 波括弧を使うと、変数の中身が展開されます /}

こんにちは、{userName}!

{/
さらに、波括弧の中では計算や条件分岐もできます。
「オンラインなら”オンライン中”、そうでなければ”オフライン”」と表示
/}

ステータス: {isOnline ? “オンライン中” : “オフライン”}

);
}

—

3. Props(プロップス)は「コンポーネントへのプレゼント」

Reactの強みは、パーツを組み合わせて画面を作ることです。このパーツ(コンポーネント)に、「この名前を表示してね」「この色にしてね」と情報を渡す仕組みが Props です。

想像してみてください。あなたは今、手作りの「名札カード」を作る工場を運営しています。
名札(コンポーネント)には、必ず「名前」と「色」が必要ですよね。それを外から渡してあげるのがPropsの役割です。

// 名札コンポーネント(受け取る側)
function NameBadge({ name, color }) {
// propsとして受け取った値を、styleや表示内容に反映
return (

名前: {name}

);
}

// 使う側(渡す側)
function App() {
return (

{/
ここで “name” や “color” という名前でデータを渡しています。
これがPropsの正体です。
/}

);
}

—

最後にお伝えしたいこと

最初は `className` や `{ }` の使い分けに戸惑うかもしれません。でも、これらはすべて「JavaScriptという強力な言語の力を、Webサイトのパーツ作りに最大限活かすため」の工夫なんです。

エラーが出ても大丈夫。それはReactが「そっちじゃないよ、こっちのルールで書いてね」と優しく教えてくれているだけです。一つひとつ、書いては消して、動かして、を繰り返してみてください。

あなたの書くコンポーネントが、少しずつ画面上で命を持って動き出す瞬間。その感動は、何にも代えがたいものですよ。

焦らず、楽しく、Reactという旅を楽しんでくださいね!また何か詰まったら、いつでも聞きに来てください。応援しています。

コメント

タイトルとURLをコピーしました