React
Reactはユーザインターフェイス(UI)を構築するために使うライブラリ
複雑なUIを「コンポーネント」と呼ばれる小さく独立した部品から組み立てる
データの変更によるUIのレンダリングはReactがしてくれる
createElementのような手続き的なDOM作成は不要
宣言的UIと呼ばれる
関数型プログラミングの側面がある
Reactの考え方
宣言的UI
MVCの視点でみるReact
Reactの再レンダリング
React を深く知るための入り口
Reactを関数型プログラミングの文脈で理解する|こわくない関数型プログラミング
制御コンポーネント・非制御コンポーネント
/teamlab-frontend/制御コンポーネントと非制御コンポーネントを正しく理解し、適切なフォームを実装しましょう
ディレクトリ構成
4年分の負債を解消するために React ディレクトリ構成について真剣に考えてみた #フロントエンド - Qiita
Reactチュートリアル
React - Speaker Deck
これさえ読めばよさそう
ホームページ
https://react.dev/
https://ja.legacy.reactjs.org/
参考文献
Getting Started – React
React の基礎 - React 入門
とほほのReact入門 - とほほのWWW入門
今から始めるReact入門 〜 React の基本 - Qiita
綺麗なReactコンポーネント設計でモノリシックなコンポーネントを爆殺する - Qiita
Reactについて一年ぶりにまとめてみた - Qiita
【覚書】 Reactを業務で使い始めて知ったこと
あなたが知っておくべき最高のReactデザインパターン - Qiita
実装例から見る React のテストの書き方 - Cybozu Inside Out | サイボウズエンジニアのブログ
https://github.com/calloc134/thinking-in-react
Web 動作確認環境
React PlayGround - CodeSandbox
メモ
開発するにあたってのルール
コンポーネント名は常に頭を大文字
CSSクラスをclassNameで指定する
<li>のようなリストの各項目には一意に識別可能な文字列または数値を渡す必要がある
JSXのkey属性に渡す
(“props” と呼ばれる)任意の入力を受け取り、画面上に表示すべきものを記述する React 要素を返す
propsは読み取り専用で書き換えない
stateを直接変更してはいけない
setState()で変更する
クラスコンポーネントの場合
親コンポーネントがstateを持ってていて、子コンポーネントがそのstateを変更させたいとき、stateを変更させるような関数をpropsにセットする
state を所有してセットするコンポーネント自身以外からはその state にアクセスすることができない
設計
React の流儀 – React
あなたが知っておくべき最高のReactデザインパターン - Qiita
別のコンポーネントに切り出す判断基準
UI の一部(Button、Panel、Avatar など)が複数回使われている場合
その UI 自体が複雑(App、FeedStory、Comment など)である場合
React要素はイミュータブル
一度要素を作成すると、その子要素もしくは属性を変更することはできない
データが変更されると、React はコンポーネントを効率よく更新して再レンダーする
親コンポーネントの state が変更されると、個々の子コンポーネントも自動的に再レンダーされる
要素は映画の中のひとつのフレームのようなものであり、それは特定のある時点の UI を表す
イミュータブルであることのメリット
複雑な機能が簡単に実装できる
例:直接的なデータのミューテートを避ける(新しく作る)ことで、ヒストリをそのまま保って後で再利用することができる
変更の検出
ミュータブルなオブジェクトよりイミュータブルなオブジェクトの方が変更の検出が容易
コンポーネントのライフサイクル
Reactの基礎【ライフサイクル】
デバッグ
Chrome と Firefox 用の React Devtools 拡張機能により、ブラウザの開発ツールで React のコンポーネントツリーを調べることができる
React Hooks
【React】状態を保持する場所
lsadsfj.icon以下はメモです。後で整理します。
私達の経験上、時間の経過によりどのように UI が変更されるかを考えるよりも、任意の時点において UI がどのように見えるべきかを考えることで、あらゆる類のバグを排除することができます。
Key は、どの要素が変更、追加もしくは削除されたのかを React が識別するのに役立ちます。配列内の項目に安定した識別性を与えるため、それぞれの項目に key を与えるべきです。
React での state の共有は、state を、それを必要とするコンポーネントすべての直近の共通祖先コンポーネントに移動することによって実現します。これを “state のリフトアップ (lifting state up)” と呼びます。
異なるコンポーネント間で state を同期しようとする代わりに、トップダウン型のデータフローの力を借りるべきです。
複数の子要素からデータを集めたい、または 2 つの子コンポーネントに互いにやりとりさせたいと思った場合は、代わりに親コンポーネント内で共有の state を宣言する必要があります。親コンポーネントは props を使うことで子に情報を返すことができます。こうすることで、子コンポーネントが兄弟同士、あるいは親との間で常に同期されるようになります。
state はそれを定義しているコンポーネント内でプライベート
小コンポーネントから親コンポーネントのstateを直接書き換えることはできない
React では、イベントを表す props には onEvent という名前、イベントを処理するメソッドには handleEventという名前を付けるのが慣習となっています。
Key
リストの項目それぞれに対して key プロパティを与えることで、兄弟要素の中でそのアイテムが区別できるようにしてあげる必要があります。
リストが再レンダーされる際、React はそれぞれのリスト項目の key について、前回のリスト項目内に同じ key を持つものがないか探します。
もし以前になかった key がリストに含まれていれば、React はコンポーネントを作成します。
もし以前のリストにあった key が新しいリストに含まれていなければ、React は以前のコンポーネントを破棄します。
もし 2 つの key がマッチした場合、対応するコンポーネントは移動されます。
key はそれぞれのコンポーネントの同一性に関する情報を React に与え、それにより React は再レンダー間で state を保持できるようになります。
もしコンポーネントの key が変化していれば、コンポーネントは破棄されて新しい state で再作成されます。
動的なリストを構築する場合は正しい key を割り当てることが強く推奨されます。
#フレームワーク
#Javascript
#フロントエンド
#Web
public.icon