反応フック?
8052 ワード
反応フックは反応版16.8で導入されました.フックは、反応の欠点に対する解決策でした.
フックは、それを簡単に学べるようにクラスを定義することなく、反応の機能を使用することができます.反応して、使用の多くの混乱がありました
フックはまた、コンポーネントを再構築することなく、statent論理の再利用を可能にします.プロシージャや高次のコンポーネントを使用して共有コードを使用することが可能ですが、その実装は、複数のレベルの抽象化をもたらし、コードをより難しくするようになりました.これは「ラッパー地獄」と呼ばれています.
フックも、1つのコンポーネントのより小さな機能への分割を許します.反応において,複雑な構成要素はライフサイクル法に基づいて分割された.これらのメソッドは、ほとんどの場合、それは簡単にバグと矛盾を扇動することを簡単にロジックと副作用のごまかしになりました.
フックは反応に置き換えられないので、コード内に共存できます.したがって、既存のコードを書き直す必要はありません.
フックに制限があり、唯一の反応機能コンポーネントまたはカスタムフックからフックを呼び出します.これは、すべてのステートフルロジックがソースコードから見えることを保証するために必要です.
フックがたくさんありますが
米国不動産
反応して、機能部品は「無国籍の構成要素」と呼ばれていました.反応状態はフックで可能です.「状態のない構成要素」を「機能構成要素」にする
The
効果
The
最も一般的な用途の1つ
テキスト
反応では、コンテキストは親コンポーネントから子コンポーネントに小文字を渡すことができます.コンテキストを機能的なコンポーネントに利用できるようにするには
使用してコンテキストを作成する
結論として
フックは、清潔さとコンポーネント、その状態とそのライフサイクル方法の単純さを利用します.しかし、それは通常のJavaScript関数で行われ、コードが短縮され、読みやすくなります.それが十分でないならば、フックはカスタムメイドのフックをつくることを可能にします.
フックは、それを簡単に学べるようにクラスを定義することなく、反応の機能を使用することができます.反応して、使用の多くの混乱がありました
this
, それは他のほとんどのプログラミング言語で使用される方法とは異なるので.言うまでもなく、イベントハンドラをバインドする必要があります.フックはまた、コンポーネントを再構築することなく、statent論理の再利用を可能にします.プロシージャや高次のコンポーネントを使用して共有コードを使用することが可能ですが、その実装は、複数のレベルの抽象化をもたらし、コードをより難しくするようになりました.これは「ラッパー地獄」と呼ばれています.
フックも、1つのコンポーネントのより小さな機能への分割を許します.反応において,複雑な構成要素はライフサイクル法に基づいて分割された.これらのメソッドは、ほとんどの場合、それは簡単にバグと矛盾を扇動することを簡単にロジックと副作用のごまかしになりました.
フックは反応に置き換えられないので、コード内に共存できます.したがって、既存のコードを書き直す必要はありません.
フックに制限があり、唯一の反応機能コンポーネントまたはカスタムフックからフックを呼び出します.これは、すべてのステートフルロジックがソースコードから見えることを保証するために必要です.
フックがたくさんありますが
useState
, useEffect
, and useContext
.米国不動産
反応して、機能部品は「無国籍の構成要素」と呼ばれていました.反応状態はフックで可能です.「状態のない構成要素」を「機能構成要素」にする
The
useState
は現在の状態値と状態値を更新する関数です.それは反応に似ているthis.setState
. 必要な唯一の引数は初期状態ですthis.state
.import React, { useState } from 'react';
function Example() {
const [flag, setFlag] = useState(false);
.
.
.
}
効果
The
useEffect
関数コンポーネントから副作用を実行する機能を追加するフックです.それは反応に似ているcomponentDidMount
, componentDidUpdate
, and componentWillMount
すべてが1つにロールアップ.最も一般的な用途の1つ
useEffect
はデータを取得することです.import React, { useState, useEffect } from 'react';
function HooksExample() {
const [flag, setFlag] = useState(false);
useEffect(() => {
if (flag) {
.
.
.
} else {
.
.
.
}
});
render() {
return (
<div>
<button
onClick={() => setFlag(!flag)}
>
Click me!
</button>
</div>
)
}
}
テキスト
反応では、コンテキストは親コンポーネントから子コンポーネントに小文字を渡すことができます.コンテキストを機能的なコンポーネントに利用できるようにするには
useContext
フックを使用する必要があります.現在のコンテキスト値はvalue
プロッププロップがプロバイダーで更新されるとき、フックは最新のRerendervalue
.使用してコンテキストを作成する
createContext
.const FlagContext = React.createContext();
コンテキストを使用した子コンポーネントは、コンテキストプロバイダーでラップされます.const App = () => {
render() {
return (
<div>
<FlagContext.Provider
value={{flag}}
>
<Flag />
</FlagContext.Provider>
</div>
)
}
}
親コンポーネントから渡されたコンテキストを使用する子コンポーネント.const Flag = () => {
const { flag } = useContext(FlagContext);
render() {
return (
<div>
.
.
.
<span className="flag">{flag}</span>
.
.
.
</div>
)
}
}
結論として
フックは、清潔さとコンポーネント、その状態とそのライフサイクル方法の単純さを利用します.しかし、それは通常のJavaScript関数で行われ、コードが短縮され、読みやすくなります.それが十分でないならば、フックはカスタムメイドのフックをつくることを可能にします.
Reference
この問題について(反応フック?), 我々は、より多くの情報をここで見つけました https://dev.to/zeppa/react-hooks-3458テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol