こんにちは!Reactの世界へようこそ。
最初はコンポーネントが何重にも重なって、どこで誰が何を受け取っているのか迷子になってしまうこと、ありますよね。大丈夫、それは誰もが通る「Reactの洗礼」です。
今日は、そんな皆さんのコードを劇的にスッキリさせ、読みやすくする魔法のテクニック「Propsの分割代入」について、お話ししたいと思います。
—
荷物の中身、いちいち「Propsさん」と呼んでいませんか?
Reactのコンポーネントにデータを渡す「Props(プロップス)」。これは、例えるなら「宅急便の箱」のようなものです。
親コンポーネントから「はい、これ使ってね」と渡された箱(Props)を開けると、中には名前や年齢、画像データなどが入っています。
多くの初心者が最初に書くコードは、こんな感じではないでしょうか。
// 悪い例:全部「props」という箱で受け取っちゃう
function UserProfile(props) {
return (
名前:{props.name}
年齢:{props.age}歳
);
}
これでも動きます。でも、もし項目が10個、20個と増えたらどうでしょう? 毎回 `props.name`、`props.age`、`props.address`……と書くのは、正直ちょっと面倒ですよね。箱を開けるたびに「propsの中の、えーっと、あれだよね」と指差し確認しているようなものです。
—
解決策:最初から「箱の中身」を仕分けちゃおう!
ここで登場するのが「分割代入(ぶんかつだいにゅう)」というテクニックです。
先ほどの「宅急便の箱」を、玄関先で受け取った瞬間に開封して、必要なものだけをキッチンやリビングに配置してしまうイメージです。
書き方のルールはこれだけ
関数の引数のところで、`props` と書く代わりに、中カッコ `{ }` を使って、欲しい名前を直接書いてしまいます。
// 良い例:受け取った瞬間に中身を取り出す!
function UserProfile({ name, age }) {
// これでもう「props.」と書く必要はありません
return (
名前:{name}
年齢:{age}歳
);
}
どうでしょう? `props.name` と書いていた場所が、ただの `name` になりました。これだけで、コードの視認性がぐっと上がり、「このコンポーネントは、結局何を受け取って動いているのか?」が一目でわかるようになります。
—
さらに一歩先へ:型付けで「守り」を固める
Reactを現場で使うなら、TypeScriptでの型付けは避けて通れません。「これって何が入ってくるか分からない!」という不安を解消するために、型(Type)を定義してあげましょう。
// どんなデータが来るかを定義してあげる(お品書きみたいなもの!)
interface UserProfileProps {
name: string;
age: number;
}
// 型をPropsに適用します
function UserProfile({ name, age }: UserProfileProps) {
return (
{name}
{age}歳
);
}
こうしておくと、もし将来誰かが間違えて「文字列(string)」を入れるべき場所に「数字(number)」を渡そうとしたとき、エディタが「それ、違いますよ!」と真っ赤な波線で優しく教えてくれます。これが、チーム開発における「安心感」の正体です。
—
大事なポイント:やりすぎには注意!
ここまで読んで「じゃあ、全部分割代入しちゃおう!」と思った方、ちょっと待ってください。
もし受け取るデータが50個も60個もあるような大きなコンポーネントの場合、全部を引数に書くと逆にコードが長くなりすぎてしまいます。そういうときは、無理せず `props` として受け取るか、そもそもコンポーネントの分け方が適切かどうかを見直すサインかもしれません。
「必要なものを、必要な分だけ」
これが、Reactにおけるコードの美しさの秘訣です。
—
最後に:小さな「スッキリ」が、大きな「自信」になる
プロの現場でも、今回紹介した分割代入は毎日使っています。それは単に「楽だから」というだけではありません。「次にこのコードを読んだ人が、迷わずに済むようにするため」です。
コードは「書く」ことよりも「読まれる」ことの方が圧倒的に多い。だからこそ、こうして少しずつ、読みやすいコードを積み重ねていってください。
最初は「`{ }` を書く場所はどこだっけ?」と迷うこともあるかもしれません。でも大丈夫、何度か繰り返せば、自然と指が覚えます。その頃には、きっとあなたもReactの楽しさを今よりもっと深く感じているはずですよ。
それでは、素敵なReactライフを!また次のステップでお会いしましょう。

コメント