コンポーネントを理解しよう
2022-01-04
Next.js
React
HTML
はじめに
細かい実装の部分ではなく、課題を通じてつまずいた部分をどのように理解していったのか?を中心に書いていきます。同じようなところで悩んでいる方への参考になれば幸いです。
今回はコンポーネントに関して深ぼっていきたいと思います。
この記事の概要
- コンポーネントのイメージをつかむ
- コンポーネントには2種類ある
- propsの使い方を理解
- 2種類のコンポーネントの使用例
コンポーネント
コンポーネントという概念、利便性をつかむのに時間がかかりました。
Reactを学習し概念はつかめましたが、利便性を理解できいなかったのでWEBサイトを作成するときに、コンポーネントをうまく活用できませんでした。
結果、最初はコードを大量に書いていました。ちょっと修正したい箇所があったとしても、何箇所もチェックする必要がありました。
コンポーネントのイメージ
書籍を読んだり、コードを書いてもしっくりこなかったので、図にしてイメージを掴んでいきます。(親会社と子会社で例えます。※子会社がコンポーネント)
1体のロボットを作ろうとしたとき、親会社が0➝1で作成しません。腕はA社、頭はB社、足はC社と、各子会社へ発注をかけます。
イメージはこんな感じ。
コンポーネントとはパーツ(部品)をつくっていくこと
すごい端的に書きましたが、親会社は指示出しと、各子会社が作成したパーツを一体のロボットに組み上げていくイメージです。
コンポーネントは2つのタイプがある
コンポーネントの考え方は理解できました。しかし、更に学んでいくと何やら同じコンポーネントでも、使い方が2種類あるのではないか!?2種類をイメージで掴んでいきます。
①ダイレクトにパスを渡すタイプ
材料から仕様書も全て子会社が準備しており、親会社は完成したパーツを受け取り1体のロボットを完成させていく。子会社から親会社へ、ダイレクトにパスされます。
②材料を渡して作ってもらうタイプ
親会社が子会社へ、使ってほしい材料を渡します。受け取った子会社は材料を使用して、パーツを作っていきます。
props
親会社から子会社へ材料を渡すには props(日本語:小道具)というキーワードが必要になってきます。
実際にコードで見ていきましょう。
親会社から子会社を指定すると同時に、渡したい材料を指定します。指定したら自動的に子会社へ情報を渡すよう、親会社は動きます。
子会社は props で親会社全体の要素を受け取ります。受け取ったら、指定された材料だけを抽出したいので props.nezi と指定する。
props.nezi と何回も記述するのがめんどくさいときもあります。シンプルにしちゃいましょう。
★受け取り方のポイント★
const { nezi } = props と変数に代入するとき、親会社で使用している nezi と一緒にする必要があります。
親会社から複数指定があった場合は
{ nezi, ita, color } の順番は{ ita, color, nezi } でもOKですし、2つだけの指定{ nezi, color } だけでも問題ないです。
「2種類のコンポーネントがあること」「propsという使い方があること」が理解出来たと思います。
概念は出来たとしても、実際にどう使っていけばいいのか、メリットは何か?が理解出来ないという壁にぶつかりました…
コンポーネントの使用例・メリット
①ダイレクトにパスを渡すタイプ
親会社から、子会社に作成してほしい仕様、作成ルールなどがガッチリ決まっており、子会社に自由にやらせても問題ないときは楽だと思います。
WEB制作に置き換えると、
- 個人で開発する場合
- パーツ要素数が少ない場合
- 簡易的に作成したい場合
実際にコードを書いてみます。
出力結果
シンプルですね。sample.jsx(子会社)が作成した文章を、index.js(親会社)がそのまま受け取り、出力しています。
②材料を渡して作ってもらうタイプ
こちらのほうが利用頻度は高いと思います。
メリットは渡す材料だけ変えれば、汎用的に使用できるということです。
例えば、親会社(index.js)で1つの子会社へ色違いのパーツを作って欲しいケースを想定して、コードを書いてみます。
親会社が色を指定するだけで、色違いのパーツが簡単に作成することが出来ています。
このように、子会社が作成していた仕様書に対して、親会社が部分的に指示出しすることが可能になっています。
メリットは、一度仕様書を作成してしまえばいつでも使い回せます。WEBサイトを作成するとき、「似たようなパーツがないか?」を意識して作成すると、効率的に作成できるのではないかと思います。
最後に
コンポーネントのイメージは掴めたでしょうか?
コンポーネントを実際のWEBサイトを作成するとき、利用方法を知っていると知っていないとでは、天と地の差があると感じました。
WEBサイを効率的に作成するには欠かせない考え方なので、コンポーネントが出来る部分はどんどんコンポーネントしてきましょう!