Open4

useEffect

ShebangDogShebangDog

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

ShebangDogShebangDog

発端になったコードの例

useEffect(() => {
  request(query)
  // object.isで比較している・objectはレンダーごとにインスタンスが異なる都合から何度も再レンダリングされる
}, [query, query.hoge, query.foo, request])

https://react.dev/reference/react/useEffect#removing-unnecessary-object-dependencies
関数以外のオブジェクトについては簡単に依存が切れるみたい。まぁ確かにそう

useEffect(() => {
  const query = {
    hoge,
    foo,
  }
  request(query)
  // まだ関数オブジェクトがあるので何度も再レンダリングはされる
}, [hoge, foo, request])

https://react.dev/reference/react/useEffect#removing-unnecessary-function-dependencies

関数は上記のようにして消すみたい。だが、今回に関してはそれができなさそう
というのもrequestは実はhookから出ている関数でstateも返却するので。。

const [state, request] = useHook()