問題タブ [usecallback]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2841 参照

reactjs - 依存関係のある useCallback と ref を使用して関数の最後のバージョンを呼び出す

コード レビューを行っているときに、次のカスタム フックを見つけました。

このフックは次のように使用されます。

基本的に、const f = useCallBack(() => { // do stuff }, [dep1, dep2])これと比較して、依存関係のリストを宣言することを回避しf、依存関係の 1 つが変更されても変更されません。

このコードについてどう考えるべきかわかりません。useLastVersionと比較して使用することの欠点がわかりませんuseCallback

0 投票する
2 に答える
285 参照

javascript - useEffectに欠落している依存関係を含める方法はありますが、関数の無限ループ実行を防ぐには?

0 投票する
2 に答える
1561 参照

reactjs - コールバックが useCallback の依存関係を更新しない useState

ここで実際の例を作成しました: https://codesandbox.io/s/magical-flower-o0gyn?file=/src/App.js

非表示ボタンをクリックすると、更新されたデータをローカル ストレージに保存します。

  1. 最初の列で非表示をクリックします。setValueWithCallback実行し、コールバックを参照に設定し、状態を設定します
  2. useEffect起動し、更新されたデータでコールバックを呼び出します
  3. saveToLocalStorage依存関係としてuseCallbackwithセットで呼び出されますdata

問題は 3 番目のステップにあります。localstorage に保存されるのは{visible: true}両方の場合です。この行を変更するかどうかはわかります:

これに:

それは動作しますが、最初の動作がうまくいかない理由を理解できません。私はそれが何らかの閉鎖に違いないと思いますが、私はそれを見ません。

dataが既に更新されていて、コールバックを実行した場合useEffect、依存関係配列で更新されないのはなぜですか?. はい、例は奇妙で、2番目の解決策は完全に問題ありません。問題を実証したかっただけです。助けてくれてありがとう!