Ich mache einen benutzerdefinierten Hook, der ein Google hat, wenn sich ein Status ändert.
Sie sollten in der Lage sein, einen beliebigen Status in einem Array zu übergeben.
import { useState, useEffect } from 'react'
const useFlatListUpdate = (dependencies = []) => {
const [toggle, setToggle] = useState(false)
useEffect(() => {
setToggle(t => !t)
}, [...dependencies])
return toggle
}
export default useFlatListUpdate
Und es sollte als verwendet werden
const toggleFlatList = useFlatListUpdate([search, selectedField /*, anything */])
Aber es gibt mir die folgende Warnung
React Hook useEffect hat ein Spread-Element in seinem Abhängigkeitsarray. Dies bedeutet, dass wir nicht statisch überprüfen können, ob Sie die richtigen dependencies.eslint (react-hooks / erschöpfende-deps) übergeben haben.
Ich habe auch eine andere Situation, in der es nicht funktioniert
const useFlatListUpdate = (dependencies = []) => {
const [toggle, setToggle] = useState(false)
useEffect(() => {
setToggle(t => !t)
}, dependencies)
return toggle
}
Dies gibt mir die Warnung
React Hook useEffect wurde eine Abhängigkeitsliste übergeben, die kein Array-Literal ist. Dies bedeutet, dass wir nicht statisch überprüfen können, ob Sie die richtigen dependencies.eslint (react-hooks / erschöpfende-deps) übergeben haben.
Wie kann ich diese Funktion ohne Warnung und ohne Deaktivierung von eslint ausführen?
useEffect(() => { setToggle(t => !t) }, [dependencies])