いくつかの状態が変化したときにあまりにも角のあるカスタムフックを作成しています。
配列で任意の状態を渡すことができるはずです。
import { useState, useEffect } from 'react'
const useFlatListUpdate = (dependencies = []) => {
const [toggle, setToggle] = useState(false)
useEffect(() => {
setToggle(t => !t)
}, [...dependencies])
return toggle
}
export default useFlatListUpdate
そしてそれはとして使用されるべきです
const toggleFlatList = useFlatListUpdate([search, selectedField /*, anything */])
しかし、それは私に次の警告を与えます
React Hook useEffectの依存配列には、spread要素があります。これは、正しい依存関係を渡したかどうかを静的に検証できないことを意味します。eslint(react-hooks / exhaustive-deps)
それが機能しない別の状況もあります
const useFlatListUpdate = (dependencies = []) => {
const [toggle, setToggle] = useState(false)
useEffect(() => {
setToggle(t => !t)
}, dependencies)
return toggle
}
これは私に警告を与えます
React Hook useEffectに、配列リテラルではない依存関係リストが渡されました。これは、正しい依存関係を渡したかどうかを静的に検証できないことを意味します。eslint(react-hooks / exhaustive-deps)
警告なしで、eslintを無効にせずにこれを機能させるにはどうすればよいですか?
あなたが正しいです。私の答えは全く間違っています。あなたや他の人を混乱させないように削除しました。私は🙏謝罪
—
dance2die
@ dance2die答えは間違っていませんでしたが、別の種類の警告が出ました。
—
Vencovsky
親切な言葉をありがとう。私もそれを参照で動作させることができなかったので、私はこの問題を他の人に任せます:)
—
dance2die
あなたの第二の例のためだけに、アレイ内の依存関係を置く:
—
ジョンB
useEffect(() => { setToggle(t => !t) }, [dependencies])