タグ

JavaScriptとuseEffectに関するmkusakaのブックマーク (1)

  • エフェクトイベント関数はuseEffectのdepsに"入れてはならない" - Panda Noir

    depsに入れなくて良い、ではなく、入れてはならない です。 エフェクトイベント関数をdepsに入れるとレンダリング毎にエフェクトが走る useEffectEventは レンダリングごとに新しい関数を返します (検証用デモ)。 そのため、useEffect の deps にエフェクトイベントを含めると毎回エフェクトが実行されます(時にはこれによって 無限ループが起きます ) const effectEventFn = useEffectEvent(callback); // レンダリングのたびに新しい関数が返される useEffect(() => { return listen(effectEventFn); }, [effectEventFn]); // ❌ effectEventFn が入っているので毎回実行される!! なので、depsにeffectEventFnを入れてはいけません。

    エフェクトイベント関数はuseEffectのdepsに"入れてはならない" - Panda Noir
    mkusaka
    mkusaka 2025/10/05
    React19.2のuseEffectEventはレンダリング毎に新関数を返すため、depsに入れると毎回実行され無限ループになることを解説(デモ付き)
  • 1