Javascript 什么';避免react HOOK/DEP的最佳方法是什么?
我目前使用useEffect钩子运行一些函数或更新一个变量,作为另一个值/变量被更改的结果 例如: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(() => {
setValues(types[formStep]]);
}, [formStep]);
我正在使用上述代码在另一个变量发生更改后更新一个变量,但是我不断收到警告React Hook useffect缺少依赖项类型
很明显,当我将“类型”作为依赖项包含时,应用程序会陷入一个循环中,我得到以下错误
超出了最大更新深度。
实现变量更新但避免错误的最佳方法是什么?不仅仅是这个例子,在所有情况下,您都需要根据之前更改的另一个变量来更新变量
实现变量更新但避免错误的最佳方法是什么
这取决于很多因素:有时使用ref(如果您不想触发更新),有时您只是派生状态,不需要使用效果(我认为这可能是您的情况),有时您只需要在某些值发生更改时触发更新。。。有时下一个值取决于上一个值,因此您应该使用函数重载setState
,并避免将上一个值作为依赖项传递。。。这个问题没有一个通用的答案
如果没有更多的上下文,很难知道你的案件发生了什么。然而,我想我知道会发生什么。。。这只是在黑暗中拍摄的一张照片
types
是您在组件功能中定义的对象吗?能否将该定义移到组件功能之外?因为如果您可以这样做,那么就没有必要将其作为依赖项传递
另外,您真的需要使用useState
和useffect
来设置值吗?你真的需要触发另一个更新吗?你就不能这么做吗
const values = types[formStep];
此处找到了一些解决方案:
另一种选择是对依赖项进行字符串化,这样它就不会每次都被视为不同的对象
useEffect(() => {}, [JSON.stringify(data)])
你能给我看一张照片吗?是类型
它自己的useState()
hook?setValues
实际上与什么有关?这可能有帮助吗?