Я роблю користувацький гачок, у якого є занадто вуглець, коли зміниться стан.
Ви повинні мати можливість передавати будь-який стан у масиві.
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 має елемент поширення у своєму масиві залежностей. Це означає, що ми не можемо статистично перевірити, чи ви пройшли правильні залежності.eslint (реакція-гачки / вичерпні-deps)
У мене також є інша ситуація, коли це не працює
const useFlatListUpdate = (dependencies = []) => {
const [toggle, setToggle] = useState(false)
useEffect(() => {
setToggle(t => !t)
}, dependencies)
return toggle
}
Це дає мені попередження
React Hook useEffect передали список залежностей, який не є літералом масиву. Це означає, що ми не можемо статистично перевірити, чи ви пройшли правильні залежності.eslint (реакція-гачки / вичерпні-deps)
Як я можу зробити цю роботу без попередження та не відключаючи еслінт?
useEffect(() => { setToggle(t => !t) }, [dependencies])