【发布时间】:2021-05-13 10:11:49
【问题描述】:
我通过 props 将状态作为变量传递给组件...
const [someState, setSomeState] = useState([])
PlaceDataInIndexDB({ setSomeState: setSomeState,
user: props.user })
在 PlaceDataInIndexDB.js 中,我有一个 useEffect,它最终使用设置状态
useEffect(() => {
props.setSomeState([array])
}), [props.user]
问题是我收到一条警告,说我需要在我的依赖数组中使用道具,但是,我不希望每次道具更改时都运行 useEffect,因为那里有很多其他道具。我能为此做些什么?这是我的代码的一个极其简化的版本。我可以发布确切的代码,但要查看的内容要多得多。
这是警告...
React Hook useEffect 缺少一个依赖项:'props'。要么包括 它或删除依赖数组。但是,“道具”会改变 any 道具发生变化,因此首选的解决方法是在 useEffect 调用之外解构“道具”对象并引用那些特定的道具 内部 useEffect react-hooks/exhaustive-deps
【问题讨论】:
-
是的,但我怎样才能用状态做到这一点?我知道如何使用变量来做到这一点。
-
按照它告诉你的去做。在 useEffect(()=>{ setSomeState()},[user]) 中访问 props 之前对其进行解构
-
能否请您展示如何使用 setSomeState 执行此操作?
-
有人吗?我不确定如何解构状态。显然其他道具可以初始化为 const something = props.something 但是如何使用 setState 函数来做到这一点?
-
const {user, setSomeState} = props; useEffect(()=>{setSomeState()}, [user]);我如上所述尝试了这个,但它仍然希望我将 setSomeState 放入依赖数组中。我被告知这是不好的形式。
标签: javascript reactjs react-props use-effect