Reactjs React钩子使用eslint插件React附加不需要的值-hooks@next
我的组件中有一个Reactjs React钩子使用eslint插件React附加不需要的值-hooks@next,reactjs,react-hooks,Reactjs,React Hooks,我的组件中有一个useffect钩子,它调用Redux操作来获取一些数据 useEffect( () => { props.getClientSummaryAction(); },[] ); 当我去保存文件时,linter会这样做 useEffect( () => { props.getClientSummaryAction(); }, [props] ); 这显然会将我的组件发送到一个无限循环中,因为getClientSummaryAction会获
useffect
钩子,它调用Redux操作来获取一些数据
useEffect(
() => {
props.getClientSummaryAction();
},[]
);
当我去保存文件时,linter会这样做
useEffect(
() => {
props.getClientSummaryAction();
}, [props]
);
这显然会将我的组件发送到一个无限循环中,因为getClientSummaryAction
会获取一些更新道具的数据
我使用了像这样的解构,而门楣更新了阵列
const { getClientSummaryAction } = props;
useEffect(
() => {
getClientSummaryAction();
},
[getClientSummaryAction]
);
我对此很满意,但这并没有什么意义,因为getClientSummaryAction
显然永远不会更新,它是一个函数
我只是想知道为什么皮棉机会这样做,以及这是否是最佳做法。这不是多余的。您知道依赖关系不会改变,但是
React
可能知道这一点。规则非常明确:
要么传递包含所有依赖项的数组,要么不向第二个参数传递任何内容,让React
跟踪更改
将第二个参数传递给
useffect
,告诉React您负责hook的调用。因此,当您没有传递包含在effecteslint
中的依赖项时,它会将此视为可能的内存泄漏并警告您。只需继续传递依赖项,就像您已经在做的那样。可能会觉得多余,但这是最好的。不是问题,不要试图解决它,这是预期的行为,你应该三思而后行。因为linter看到您在效果回调中使用了“依赖项”。@AdolfoOnrubia我看到它的方式是[getClientSummaryAction]
指示如果getClientSummaryAction
更改,则再次运行效果。但是getClientSummaryAction
什么时候会改变?当收到时,行为应该像ComponentDidMount那样,不是吗?好吧,我只是觉得它是多余的,但我可以很好地理解负责人的类比。这有点不直观,但你最终明白了要点