
VUE3.0 をすぐに始める方法: 学習を始める前に、
フックは特に関数型コンポーネントで使用され、クラス コンポーネントの他の機能を置き換えることができます。実際の仕事でもよく使われます。
フックは、機能コンポーネントの開発と連携するために特別に使用され、多数のコンポーネントによる混乱を避けるために使用できます。フックは開発に便利で、開発者にとってコードを理解しやすくなります。
上記は個人的な概要です。その他の理由については、React 公式 Web サイトを参照してください:
https://react.docschina.org/docs/hooks-intro。 html#motivation
コード内:
React.useState(0) はクラスコンポーネントの this に相当します。 state に属性値
変数を追加することは、クラスコンポーネントの this.state に相当します。 変数 setVariable の値
を使用できます
。変数の値を変更するには、クラスコンポーネントの this.setState と同等にすることができます。
import React, (useState) from 'react'
デフォルト関数 useState_Demo() をエクスポート {
const [variable, setVariable] = useState(0);//代入を分割することで、変数と setVariable を取得します。
関数changeVariable(){
setVariable((variable) => variable +1) //setVariable のコールバックで渡されるパラメータは変数です
}
与える (
<div>
<button onclick = {change}>クリックして変数+1を作成します</button>
</div>
)
次のコード
からわかるように、useEffect の使用は、クラス コンポーネントの import React, (useState, useEffect) の使用を
置き換え
。
デフォルト関数 useState_Demo() をエクスポート {
const [variable, setVariable] = useState(0);//代入を分割することで、変数と setVariable を取得します。
useEffect(() => {
//この return は、コンポーネントによって監視されているデータが変更されたとき、またはコンポーネントがアンインストールされたときに呼び出されます。これは、componentWillUnmount フック return () => { と同等です。
console.log('コンポーネントはアンインストールされました')
}
}, [variable])//2 番目のパラメータは [variable] に渡されます。これは、変数の更新変更が検出されると、useEffect コールバックが再度実行されることを意味します。 //2 番目のパラメータは [] に渡されます。これは、検出では useEffect コールバックが 1 回だけ実行されることを意味します。これは、componentDidMount フックと同等です。 // 2 番目のパラメータは、コンポーネントに状態変化がある限り、useEffect コールバックが実行されます。これは、componentDidUpdate フック関数changeVariable(){ と同等です。
setVariable((variable) => variable +1) //setVariable のコールバックで渡されるパラメータは変数です
}
与える (
<div>
<button onclick = {change}>クリックして変数+1を作成します</button>
</div>
)
:
1. フックはコンポーネント関数の最外層でのみ使用してください。ループ、条件、または入れ子関数でフックを呼び出さないでください
。
デフォルト関数 useState_Demo() をエクスポート {
//これは正しい useEffect(() => {})
//エラー 1、条件判定を使用する if(true) {
useEffect(() => {})
}
//エラー 2、ループ while(true) の使用 {
useEffect(() => {})
}
//エラー 3、ネストされた useEffect(() の使用 => {
useEffect(() => {})
})
2. 'react' からのフック import React, (useState, useEffect) は、
コンポーネントの関数の外では使用できません。
//エラー 1、useState がコンポーネント関数の外で使用されています
const [変数, setVariable] = useState(0);
//エラー 2、useEffect がコンポーネント関数の外で使用されています
useEffect(() => {})
デフォルト関数 useState_Demo() をエクスポート {
//コンポーネント関数内で使用するのが正しい const [variable, setVariable] = useState(0);
3.上記のエラーを回避するには、 eslint-plugin-react-hooks ESLint プラグインをインストールして、コード内のエラーをチェックします。
フックは、相互間のロジックの共有を容易にする機能です。コンポーネントは実際には再利用され、関数はカプセル化されており、カスタム フックは、react に付属するフックも呼び出します。名前は use
// Custom フックで始まる必要があります。
関数 useHook(initState) {
const [変数, setVariable] = useState(initState)
変数を返します。
}
//カスタムフックを使用する
デフォルト関数 useState_Demo() をエクスポート {
const variableState = useHook(0)
疑問に思っているかもしれませんが、
複数のコンポーネントで同じフックを使用すると状態が共有されるのでしょうか?
答えは「いいえ」です。なぜなら、react に付属するフックへの各呼び出しは独立しており、互いに影響を与えないためです。同様に、カスタム フックも独立しており、複数回呼び出されても互いに影響を与えません。