Shiraishi-Shodai / ReactNative-Task-Management

0 stars 0 forks source link

Context APIによって発生している不要なレンダリングを排除 #29

Open Shiraishi-Shodai opened 4 weeks ago

Shiraishi-Shodai commented 4 weeks ago

Context Providerの再レンダリング(Perplexity):

Context APIで管理している値を変更したとき、再レンダリングは以下の順序で発生します:

  1. Context Providerの再レンダリング: 値が変更されると、まずContext Providerコンポーネントが再レンダリングされます[1][2]。

  2. Context Consumerの再レンダリング: その後、そのContextを使用している(useContextフックを呼び出している)すべてのコンポーネントが再レンダリングされます[1][2]。

  3. 子コンポーネントへの伝播: Consumerコンポーネントの子コンポーネントも、通常のReactのレンダリングプロセスに従って再レンダリングされます。

重要なポイント

再レンダリングを最適化するための方法:

  1. Contextの分割: 関連する値ごとに別々のContextを作成し、必要な値のみを更新します[2]。

  2. メモ化の使用: React.memoやuseMemoを使用して、不要な再レンダリングを防ぎます[2]。

  3. 値の構造化: Contextの値をうまく構造化し、必要な部分のみが更新されるようにします[3]。

  4. useRefの活用: 再レンダリングを引き起こさずに値を更新したい場合は、useRefを使用することも検討できます[3]。

これらの最適化テクニックを適切に使用することで、Context APIを効率的に利用しつつ、不要な再レンダリングを最小限に抑えることができます。

Citations: [1] https://qiita.com/yokoto/items/ee3ed0b3ca905b9016d3 [2] https://qiita.com/soarflat/items/b154adc768bb2d71af21 [3] https://zenn.dev/sora_kumo/articles/72fae8a8244adf [4] https://blog.uidev.jp/blog/entry-68.html [5] https://smashawk.com/post-13/ [6] https://tech.codmon.com/entry/2023/12/18/100000 [7] https://note.com/gota_disney/n/nb478e9a8fca2 [8] https://note.com/standenglish/n/ne9d147b6a6cc