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