これは React の今後の useEffectEvent フックを正確に埋めるものですか?潜在的な問題はありますか?
useEffectEvent
私がよくわからないのは、返された関数が他の効果に使用される前に参照が更新されることが保証されているかどうかです。コード内の他の場所でかなり難解な useInsertionEffect を使用しない限り、これで問題ないと思いますが、確認したかったのです。
useInsertionEffect
React チームは useEffectEvent の公式ポリフィルを提案していないと思います (少なくとも私はまだ見ていません)。
そうは言っても、元々は、useEvent の現在は廃止された RFC に対して、 で useLayoutEffect を使用できます。 イベントとエフェクトの分離 の初期バージョンで、Dan Abramov は次のような更新バージョンを示しました (ドキュメントには表示されなくなりました):
useLayoutEffect
このポリフィルは useInsertionEffect を使用します。この選択の理由は、 挿入エフェクトが (useLayoutEffect や useEffect と比較して) 最初に実行される であるためだと思います。したがって、他のエフェクトが実行される前に参照が更新されると想定するのが非常に安全です。
や
と比較して) 最初に実行される
その後、useEvent の RFC は棚上げされ 、ドキュメント に示されているように useEffectEvent が開始されました。それにもかかわらず、公開された動作は同じであるため、同じポリフィルを再利用して useEffectEvent を実装できます。
useEvent
に示されているように
を実装できます。
useCallback(..., []) のおかげで)。これは必要ないかもしれませんが、(念のため) より簡単です。コンシューマーが、返された関数をエフェクトの依存関係に誤って追加しました)。
のおかげで)。これは必要ないかもしれませんが、(念のため) より簡単です。コンシューマーが、返された関数をエフェクトの依存関係に誤って追加しました)。
新しい React ドキュメントの useEvent ポリフィル を確認してください。
React チームは
useEffectEvent
の公式ポリフィルを提案していないと思います (少なくとも私はまだ見ていません)。そうは言っても、元々は、useEvent
リーリーの現在は廃止された RFC に対して、 で
useLayoutEffect
を使用できます。 イベントとエフェクトの分離 の初期バージョンで、Dan Abramov は次のような更新バージョンを示しました (ドキュメントには表示されなくなりました):このポリフィルは
useInsertionEffect
を使用します。この選択の理由は、 挿入エフェクトが (useLayoutEffectや
useEffectと比較して) 最初に実行される
であるためだと思います。したがって、他のエフェクトが実行される前に参照が更新されると想定するのが非常に安全です。その後、
このポリフィルを使用すると、フックは安定した関数を返すことに注意してください (useEvent
の RFC は棚上げされ 、ドキュメントに示されているように
useEffectEvent が開始されました。それにもかかわらず、公開された動作は同じであるため、同じポリフィルを再利用して useEffectEventを実装できます。
useCallback(..., [])
ポリフィルについて詳しく知りたいのですが、これについてはすでにブログに書きました。のおかげで)。これは必要ないかもしれませんが、(念のため) より簡単です。コンシューマーが、返された関数をエフェクトの依存関係に誤って追加しました)。
新しい React ドキュメントの useEvent ポリフィル を確認してください。