フレームワーク - インタビューの質問 7 - React のフックの長所と短所は何ですか

e61362e229eae51b724f6f7046e24517.png

は非常に抽象的な概念reactでありhooks、初心者にとってはあまりフレンドリーではないことがよくありReactますhooks

アドバンテージ

[1]. コードは非常に読みやすいです。使用する前に、パブリッシュ/サブスクライブ カスタム イベントをライフ サイクルhooksにマウントし、ライフ サイクルでクリアする必要があります。使用後、 pass 、ライフ サイクルを置くことができます。ライフ サイクル。コードのメンテナンスを容易にする集中化されたライフ サイクルもあります。componentDidMountcomponentWillUnmounthooksuseEffectcomponentDidMountcomponentDidUpdatecomponentWillUnmount

[2]. コンポーネントのレベルは浅くなり、それを使用する前に、通常、複数のコンポーネントの共通の状態を実現し、コンポーネントの機能を強化するためにhooks高次コンポーネントの方法が使用されます。これにより、コンポーネントのレンダリングとコストが増加します。Hocただし、カスタムコンポーネントメソッドHooksを使用すると、複数のコンポーネント間の共有状態をカスタム に置くことができ、簡単に状態を共有できます。hooksuseXXx()hooks

class[3].クラスコンポーネントthisのポインティング問題について考える必要がなく、hooksコンポーネント内のthis.stateデータやメソッドを取得するためにそれを使用する必要もありません。

[4]. 状態ロジックをコンポーネントから抽出できるため、これらのロジックを個別にテストして再利用できるため、Hookコンポーネントの構造を変更せずに状態ロジックを再利用できるため、コンポーネント間の共有がHookより便利になります。つまり、冗長なコードを大幅に削減できます。特にロジックを再利用する必要があるシナリオの場合

[5]. 破壊的な変更はなく、概念の理解にHook影響を与えず、既知の概念に対してより直接的な、、、、、ライフサイクルを提供しそれら組み合わせる強力な方法を提供しますReactHookReactAPIpropsstatecontextrefsHook

[6]. テストが簡単:hooks純粋なJavaScript関数であるため、単体テストを作成してシミュレーションするのが簡単です。

欠点がある

[1]. useEffect1 つにあまり多くのことを書き込むことはできません. 異なる機能ごとに複数のモジュールに分割して使用し、各機能ブロックを複数のモジュールに分割します.ソフトウェア設計における単一責任モデルuseEffectに従いhooksます.この 3 つを含みますライフサイクル、他のクラスコンポーネントのライフサイクルはサポートされていませんuseEffectconponentDidMountcomponentDidUpdatecomponentWillUnmountclass

class[2].コンポーネント内で呼び出さないでくださいhook。これは無効です。クラス コンポーネントのライフサイクルを完全にはシミュレートできません。useEffect hookシミュレートには使用できますが、使用するにはさらに考えて計画する必要があります。

[3].Hooksこれは新しい機能であり、互換性の問題がいくつかあり、クラス コンポーネント方式に比べて学習曲線が比較的急で、このプログラミング モードに適応するのに時間がかかります。

React主なhooks利点は、コードの可読性とパフォーマンスが向上し、コードのメンテナンスと反復が容易になり、同時に状態共有がより適切に達成されることですが、特定のシナリオと組み合わせて最適な方法を選択することも必要です。使用中の要件、それ以上のものはありませんhook。技術的な解決策のオプションがもう 1 つあります。

JS インタビューの質問 18 - Web ページのパフォーマンス最適化のパフォーマンス指標とそれを定量化する方法について話します

2023-03-14

81579f09edb2b9d83291858657ad04b3.jpeg

JS インタビューの質問 17 - サーバー側レンダリングとクライアント側レンダリングの比較

2023-03-12

147bb2a958085814c5253d6b99f0e2d6.jpeg

JS インタビューの質問 16-Es6 のイベント拡張機能はどのようなシナリオで使用されますか?

2023-03-11

13573ced48ae0eb53fde671e96469064.jpeg

JS インタビューの質問 16-Es6 のイベント拡張機能はどのようなシナリオで使用されますか?

2023-03-10

f637c3cd9fe13388a5718a811d034729.jpeg

フレームワーク - インタビューの質問 6 - Vue2 と Vue3 のフック機能についての話

2023-03-09

ed052255bce12b84752e8e34fa47c1b9.jpeg

インターネットでの操作がこの記事でわかる

2023-03-03

561402577144638bb9f992802841a610.jpeg

履歴書の変更から面接まで知っておくべきこと

2023-03-02

5c153e02cae11bdaf783182cd8c5b028.jpeg

入社前に求職者が事前に理解しておくべき質問

2023-03-01

3ef840ce62d88899168b2bcf83378c70.jpeg

いつもコードをコピーしますよね?ChatGPT はコードの書き方を教えます

2023-03-17

1cbf3b3325480a7bce4bdba265139f5f.jpeg

今年36歳、北友大学を修士号を取得して卒業、アリのバイトで働いている、最近解雇され、アウトソーシングにしか行けない

2023-03-17

ce5fb1fec04f177b3338c8d899d28edb.jpeg

8ca955909237fa1c61b0cfb205a4128a.jpeg

841317d1e473e1780d75844144b911b2.png

さらに見るには左下隅をクリックしてください

ecd231ea2316cacab231d7c3fbae0fc4.gif

おすすめ

転載: blog.csdn.net/wzc_coder/article/details/129645730