const [watchValue、setWatchValue] = useState(''); const [otherValue1, setOtherValue1] = useState(''); const [otherValue2, setOtherValue2] = useState(''); 使用効果(() => { 何かを実行します(他の値1、他の値2); }, [watchValue, otherValue1, otherValue2]); ここで厄介な疑問が浮かびます。
この問題は、 const [watchValue、setWatchValue] = useState(''); const other1 = useRef(''); other2 は useRef() を使用します。 // 参照は変更されないため、依存関係配列に ref を追加する必要はありません useEffect(() => { 何かを実行します(other1.current、other2.current); }, [ウォッチ値]); この方法では、 これは 「react」から useState、useRef をインポートします。 // useState の応答性を維持しながら useRef の参照特性を使用する type StateRefObj<T> = { _状態: T; 値: T; }; デフォルト関数 useStateRef<T>( をエクスポートする 初期状態: T | (() => T) ): StateRefObj<T> { // 初期化値 const [init] = useState(() => { if (typeof initialState === "function") { 初期状態を () => T として返します (); } 初期状態を返します。 }); // コンポーネントのレンダリングをトリガーする状態を設定します。const [, setState] = useState(init); // 値を読み取ると、最新の値が取得されます // 値を設定すると、setStateがトリガーされ、コンポーネントがレンダリングされます const [ref] = useState<StateRefObj<T>>(() => { 戻る { _状態: 初期化、 値を設定する(v: T) { this._state = v; 状態を設定します。 }, 値を取得する() { this._state を返します。 }, }; }); // 返されるのは参照変数であり、コンポーネントのライフサイクル全体を通じて変更されません。 return ref; } したがって、次のように使用できます。 定数ウォッチ = useStateRef(''); const other1 = useStateRef(''); const other2 = useStateRef(''); // 値を次のように変更します: watch.value = "new"; 使用効果(() => { 何かを実行します(other1.値、other2.値); // 実際、これら 3 つの値は参照変数となり、コンポーネントのライフサイクル全体で変更されないため、依存関係配列を追加する必要はありません。 // ただし、React Hooks の eslint プラグインは、useRef を参照としてのみ認識できます。追加されていない場合は警告が表示されます。変数参照の安全性のため、引き続き追加されます。 }, [watch.value, other1, other2]); このように、 上記は、フック依存性のトラブルを解消するためのReactのヒントの詳細です。Reactフック依存性の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: 実稼働環境でのNginx高可用性ソリューションの実装プロセスの分析
>>: CentOS 7 での mysql 5.7 のインストール チュートリアル
序文MySQL では、Innodb と MyIsam の両方がインデックス構造として B+ ツリーを...
目次1. はじめに2. まずLinux環境を紹介しましょう3. TIME_WAIT状態遷移図4. 継...
解凍したフォルダ C:\web\mysql-8.0.11 を開き、フォルダ内に my.ini 構成フ...
目次1. 父から息子へ2. 息子から父へ3. 親子関係のないコンポーネントの値の転送4. ヴュークス...
目次インストール: 1. ファイアウォールの基本的な使い方2. ファイアウォールd-cmdを設定する...
目次1. インストール前の準備、インストールパッケージのダウンロード1 インストールの準備2 インス...
職業的な観点からも、人生の観点からも、良い再建をすることは本当に簡単ではありません。楽観的で熱心で前...
序文最近、C++ 動的ライブラリをテストするためにロボット フレームワークを使い始めました。ロボット...
1. 背景実際のプロジェクトでは、分散スケジュールされたタスク実行の状況に遭遇することがあります。ス...
コードをコピーコードは次のとおりです。 <html> <本文> <?p...
インデックス拡張: InnoDB は、プライマリ キー列をそのインデックスに追加することで、各セカン...
MySQL 8.0.16 にインストールする場合、「UTF8B3」ではなく「UTF8B4」が使用さ...
プロジェクトのニーズにより、ブートストラップ フレームワークを慎重に学習する予定です。以前から少しは...
数秒後に広告が表示されて消えることがよくあります。この機能を実装するには、JQuery フレームワー...
目次1. オブジェクトリテラル2. newキーワードはオブジェクトを作成する3. Object.cr...