React Fiber は、React 16 で導入された React コア アルゴリズムを完全に書き直したものです。これは、以前の React 調整アルゴリズムの制限に対処するために開発され、パフォーマンスの向上、ユーザー エクスペリエンスの向上、複雑な更新を処理するためのより高度な機能を提供します。
React Fiber は インクリメンタル レンダリング を有効にすることでレンダリング プロセスを強化し、React が作業を一時停止して後で続行できるようにします。この段階的なアプローチにより、React は更新に優先順位を付け、複雑で重いタスク中でもユーザー インターフェイス (UI) の応答性を維持できるようになります。
インクリメンタル レンダリング: React Fiber はレンダリング プロセスをより小さな作業単位に分割できるため、複雑なレンダリング タスク中であってもブラウザの応答性を維持できます。更新の優先度に基づいて作業を一時停止したり再開したりできます。
優先順位付け: React ではさまざまな更新に優先順位を付けることができるようになりました。たとえば、ユーザー入力イベントがバックグラウンド タスクよりも優先され、UI の応答性が確保されます。
同時実行性: React Fiber は複数の更新を同時に (同時に) 処理できるため、応答性が向上し、ジャンクや UI のフリーズが軽減されます。
エラー境界: Fiber では、React コンポーネントのエラー処理が改善されました。コンポーネントでエラーが発生した場合、エラー境界によりアプリのクラッシュが防止され、コンポーネントは正常に回復できます。
タイムスライシング: React Fiber は タイムスライシングを導入し、React が小さな時間単位でタスクを処理できるようにします。アイドル時間中に実行される作業をスケジュールできるため、負荷の高い計算中に UI がフリーズしたり遅れたりすることがなくなります。
アニメーションとトランジションの改善: Fiber を使用すると、アニメーションとトランジションがよりスムーズになります。 React には、緊急でない UI 更新を延期し、アニメーションなどの重要な視覚要素を正しいフレーム レートで実行し続ける機能が追加されました。
React Fiber の内部アーキテクチャは、React コンポーネントの軽量表現である ファイバー オブジェクト の概念に基づいて構築されています。これらのファイバー オブジェクトはコンポーネントの状態を保持し、ツリー状の構造で接続されます。このツリーはファイバー ツリーとして知られており、各コンポーネントには独自のファイバー オブジェクトがあります。
調整プロセスは 3 つのフェーズに分かれています:
レンダリング フェーズ: レンダリング フェーズ中に、React は UI の更新に必要な変更を計算します。 React は、コンポーネントを表すファイバーのツリーを構築します。このフェーズは増分的になり、React が作業を一時停止したり再開したりできることを意味します。
コミット フェーズ: レンダリング フェーズの後、React は計算された変更を実際の DOM に適用します。これは、ブラウザが新しい UI に更新されるフェーズです。
調整: React はコンポーネント ツリーの以前の状態と現在の状態を比較し、何が変更されたかを判断します。このプロセスは、React Fiber によってバックグラウンドで効率的に実行されます。
React Fiber が登場する前は、React のレンダリングは同期的でした。つまり、更新が一度にすべて適用され、メインスレッドがブロックされ、複雑な更新中に UI がフリーズしていました。このアプローチは、特に多くのコンポーネントと複雑な UI 更新を含む大規模なアプリケーションでは非効率的でした。
React Fiber では、レンダリングは非同期であり、更新は小さなチャンクに分割されます。この非同期アプローチにより、特に複雑な UI や優先順位を付ける必要があるタスクの場合、React の効率と応答性が向上します。
優先順位:
同時実行性:
インクリメンタル レンダリング:
エラー境界:
レンダリング フェーズ: レンダリング フェーズ中に、React はどのコンポーネントを更新する必要があるかを計算します。作業は段階的に行われ、必要に応じて React が一時停止および再開されます。
コミットフェーズ: React が変更を計算した後、それらの変更を別のフェーズで DOM に適用します。
更新フェーズ: React Fiber は、新しい状態とプロパティに基づいて、必要に応じてツリー内のコンポーネントを更新します。
タイム スライシング は、React Fiber に導入された重要な機能です。タスクを小さな部分に分割するため、React はアイドル時間 (ブラウザーが他のタスクを実行していないとき) にタスクをまとめて実行できます。これにより、UI のブロックが防止され、インターフェイスがスムーズで応答性が高くなります。
たとえば、React が大きなリストを更新する必要がある場合、すべての項目がレンダリングされるまでメインスレッドをブロックするのではなく、アイドル期間中に一度にいくつかの項目をレンダリングできます。これにより、UI のインタラクティブ性と応答性が維持されます。
React Fiber は、レンダリング サイクルをより詳細に制御できるようにすることで、アニメーションをよりスムーズにします。 React は作業を一時停止したり再開したりできるようになったので、アニメーションを中断することなくスムーズに実行できるようになりました。 React は、アニメーションが正しいフレーム レートでレンダリングされるように、他のタスクよりもアニメーションを優先することもできます。
React Fiber は 同時モード の重要な部分であり、React がレンダリングを中断してアニメーションやユーザー入力などの優先度の高いタスクを処理し、後で戻って重要度の低い作業を続行できるようにします。これは、React が緊急性に基づいてタスクに優先順位を付け、よりスムーズなユーザー エクスペリエンスを実現できることを意味します。
React Fiber は、React の以前のレンダリング アーキテクチャから大幅に改善されました。インクリメンタル レンダリング、優先順位付け、同時実行により、React アプリはより高速で応答性が高く、複雑な UI やインタラクションを処理できるようになります。これらの機能強化により、開発者はパフォーマンスやユーザー エクスペリエンスを犠牲にすることなく、高度にインタラクティブなアプリケーションを構築できるようになります。
Fiber は React の 同時モード への道を切り開き、将来のリリースではさらに優れたパフォーマンスの最適化と柔軟性が約束されます。
以上がReact Fiber を理解する: React のパフォーマンスとユーザー エクスペリエンスの向上の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。