Open13

React公式ドキュメントを読んで忘れていたこと・知らなかったこと・改めて気をつけたいこと

38Koo38Koo

https://ja.react.dev/learn/rendering-lists#where-to-get-your-key

ローカルで生成されたデータ: データがローカルで生成されて保持される場合(例:ノートを取るアプリにおけるノート)は、アイテムを作成する際に、インクリメンタルなカウンタや crypto.randomUUID()、または uuid などのパッケージを使用します。

idとかが取得できない時アイテムのindexをkeyにしちゃってたけど(本当は非推奨、同リンク落とし穴の節参照)、これ今度試してみたい!

38Koo38Koo

https://ja.react.dev/learn/keeping-components-pure#detecting-impure-calculations-with-strict-mode

React には “Strict Mode” という機能があり、開発中には各コンポーネント関数を 2 回呼び出します。関数呼び出しを 2 回行うことで、Strict Mode はこれらのルールに反するコンポーネントを見つけるのに役立ちます。

開発環境で関数が2回呼び出されるのは知ってたけど、純粋性を担保するためだったのか!?

38Koo38Koo

https://ja.react.dev/learn/keeping-components-pure#why-does-react-care-about-purity

  • コンポーネントが異なる環境、例えばサーバ上でも実行できるようになります! 入力値が同じなら同じ結果を返すので、ひとつのコンポーネントが多数のユーザリクエストを処理できます。
  • 入力値が変化しない場合、レンダーをスキップすることでパフォーマンスを向上できます。これが問題ないのは、純関数は常に同じ出力を返すため安全にキャッシュできるからです。
  • 深いコンポーネントツリーのレンダーの途中でデータが変化した場合、React は既に古くなったレンダー処理を最後まで終わらせるような無駄を省き、新しいレンダーを開始できます。純粋性のおかげで、いつ計算を中断しても問題ありません。

パフォーマンスの観点が大きいのかな?