【发布时间】:2020-02-01 06:33:45
【问题描述】:
我正在制作一个自定义钩子,当某些状态发生变化时会有一个工具。
您应该能够传递数组中的任何状态。
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(react-hooks/exhaustive-deps)
我还有另一种情况,它不起作用
const useFlatListUpdate = (dependencies = []) => {
const [toggle, setToggle] = useState(false)
useEffect(() => {
setToggle(t => !t)
}, dependencies)
return toggle
}
这给了我警告
React Hook useEffect 传递了一个不是数组文字的依赖项列表。这意味着我们无法静态验证您是否传递了正确的 dependencies.eslint(react-hooks/exhaustive-deps)
如何在没有警告且不禁用 eslint 的情况下完成这项工作?
【问题讨论】:
-
你是对的。我的回答是大错特错。我删除了它,以免进一步混淆您和其他人。我道歉????
-
@dance2die 你的回答没有错,但它只是给出了另一种警告。
-
感谢您的客气话。我也无法让它与裁判一起工作,所以我会把这件事留给其他人:)
-
对于第二个示例,只需将依赖项放入数组中:
useEffect(() => { setToggle(t => !t) }, [dependencies])
标签: reactjs react-native eslint react-hooks