反応フックのわずかに誤解を招く用語


ので、フックの反応は素晴らしいです、彼らははるかに簡単なコンポーネントを作る、彼らはあなたの抽象的なコンポーネントロジックを許可し、クラスのコンポーネントを完全に廃止.
しかしこれらのフックの名前は、いくぶん紛らわしいです.特に反応後、すべての機能コンポーネントを私たちに機能した.
詳しく説明します

副作用
副作用とは何か副作用は、関数が自分自身のスコープ以外のアプリケーションの別の部分を変更したときです.
function goHome() {
  window.location.href = '/home';
}
この関数を呼び出すと、グローバル変数であるウィンドウの位置が更新されます.
また、迅速に犯罪の副作用のパートナーをカバーする価値がある:

能の
idemative関数は、毎回入力の同じセットの同じ値を返します.
function getPath() {
  return window.location.pathname;
}
この関数は無効です.場所が変更された場合は、別の結果を得るだろう.
それでは、話をしましょうuseEffect :

効果

Accepts a function that contains imperative, possibly effectful code.


useEffect(() => {
  window.location.href = '/home';
}, []);
有効なフックは、機能的なコンポーネントの中で効果的なふるまいをすることができます.
あなたがUseEffectの中で副作用をするならば、反応はRenderサイクルの終わりにその副作用を押します.反応条件では、効果は、レンダリングサイクルを保護することではなく、副作用を除去することです.
なぜこの区別は重要ですか?私たちは、しばしば「純粋な」として反応成分について話します.純粋なコンポーネントは副作用フリーであり、無能であるべきです.あなたの副作用を有効にするのは、あなたのコンポーネントがまだ純粋であることを意味しません.

米国不動産
私は多くの人々が「我々が今我々にフックを持っているスマート/汚い部品を必要としない」ようなものを言うのを見ました
私はパターンやアーキテクチャに深く行きたくないが、Reduxの代わりにusEstateを使用しているので、まだ状態をコンポーネントに導入している.これは、コンポーネントの無効化を中断します.
コンポーネントが管理する状態のすべての部分については、そのコンポーネントについての理由、テスト、およびコントロールを行うのが難しくなります.
TLUSENT博士は他のどのコンポーネント状態にも異なっていません-それは機能しません.

機能対機能成分
私が最近気づいた何かを大丈夫にしてくださいfunctional コンポーネントが実際には、docsはこれらを参照してくださいfunction コンポーネント.違いは?
私は、違いがこれであると思っています:
エーfunctional コンポーネントは、機能プログラミングの規則に固執します.それは、無能で、純粋で、無力です.
エーfunction コンポーネントは、ちょうど関数として起こる古いコンポーネントです.
それはかなり大きな不一致です.機能コンポーネントについて話しているとき、我々はそれが機能的なコンポーネントであるかどうか気にしますか?
私はそれを信じていたすべてのファンクションコンポーネントは副作用であり、無料です.現在、私はそれほど確信していません.

結論
我々は間違いなくここでいくつかの混乱の用語を持っている.useEffect あなたのコンポーネントの「out」を保つ何らかの方法を提供していません.とfunction コンポーネントはAと同じではありませんfunctional コンポーネント.

私はフックを使用して停止する必要がありますか?
絶対にない.フックはものすごいです.私は、フックが機能純度を保存する若干の不思議な構成でないのを意識して欲しいです.あなたの構成要素が副作用を引き起こすか、引き起こすならば、useState and useEffect この事実を変えないでください.