Javascript 什么';避免react HOOK/DEP的最佳方法是什么?

Javascript 什么';避免react HOOK/DEP的最佳方法是什么?,javascript,reactjs,react-hooks,use-effect,Javascript,Reactjs,React Hooks,Use Effect,我目前使用useEffect钩子运行一些函数或更新一个变量,作为另一个值/变量被更改的结果 例如: useEffect(() => { setValues(types[formStep]]); }, [formStep]); 我正在使用上述代码在另一个变量发生更改后更新一个变量,但是我不断收到警告 React Hook useffect缺少依赖项类型 很明显,当我将“类型”作为依赖项包含时,应用程序会陷入一个循环中,我得到以下错误 超出了最大更新深度。 实现变量更新但避免错误的

我目前使用useEffect钩子运行一些函数或更新一个变量,作为另一个值/变量被更改的结果

例如:

 useEffect(() => {
   setValues(types[formStep]]);
 }, [formStep]);
我正在使用上述代码在另一个变量发生更改后更新一个变量,但是我不断收到警告
React Hook useffect缺少依赖项类型

很明显,当我将“类型”作为依赖项包含时,应用程序会陷入一个循环中,我得到以下错误

超出了最大更新深度。

实现变量更新但避免错误的最佳方法是什么?不仅仅是这个例子,在所有情况下,您都需要根据之前更改的另一个变量来更新变量

实现变量更新但避免错误的最佳方法是什么

这取决于很多因素:有时使用ref(如果您不想触发更新),有时您只是派生状态,不需要使用效果(我认为这可能是您的情况),有时您只需要在某些值发生更改时触发更新。。。有时下一个值取决于上一个值,因此您应该使用函数重载
setState
,并避免将上一个值作为依赖项传递。。。这个问题没有一个通用的答案

如果没有更多的上下文,很难知道你的案件发生了什么。然而,我想我知道会发生什么。。。这只是在黑暗中拍摄的一张照片

types
是您在组件功能中定义的对象吗?能否将该定义移到组件功能之外?因为如果您可以这样做,那么就没有必要将其作为依赖项传递

另外,您真的需要使用
useState
useffect
来设置
值吗?你真的需要触发另一个更新吗?你就不能这么做吗

const values = types[formStep];

此处找到了一些解决方案:

另一种选择是对依赖项进行字符串化,这样它就不会每次都被视为不同的对象

useEffect(() => {}, [JSON.stringify(data)])
你能给我看一张照片吗?是
类型
它自己的
useState()
hook?
setValues
实际上与什么有关?这可能有帮助吗?