Open4
useEffect

react-hooks/exhaustive-depsでなやんだのでdependenciesについて調査する

発端になったコードの例
useEffect(() => {
request(query)
// object.isで比較している・objectはレンダーごとにインスタンスが異なる都合から何度も再レンダリングされる
}, [query, query.hoge, query.foo, request])
関数以外のオブジェクトについては簡単に依存が切れるみたい。まぁ確かにそう
useEffect(() => {
const query = {
hoge,
foo,
}
request(query)
// まだ関数オブジェクトがあるので何度も再レンダリングはされる
}, [hoge, foo, request])
関数は上記のようにして消すみたい。だが、今回に関してはそれができなさそう
というのもrequestは実はhookから出ている関数でstateも返却するので。。
const [state, request] = useHook()

こういう時はuseEffectEventで切り分ける?
const [state, request] = useHook()
const requestEffectEvent = useEffectEvent(request)
useEffect(() => {
const query = {
hoge,
foo,
}
requestEffectEvent(query)
}, [hoge, foo])

useEffectEventの使い方合ってるのかな。。