Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs React钩子使用eslint插件React附加不需要的值-hooks@next_Reactjs_React Hooks - Fatal编程技术网

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的调用。因此,当您没有传递包含在effect
eslint
中的依赖项时,它会将此视为可能的内存泄漏并警告您。只需继续传递依赖项,就像您已经在做的那样。可能会觉得多余,但这是最好的。

不是问题,不要试图解决它,这是预期的行为,你应该三思而后行。因为linter看到您在效果回调中使用了“依赖项”。@AdolfoOnrubia我看到它的方式是
[getClientSummaryAction]
指示如果
getClientSummaryAction
更改,则再次运行效果。但是
getClientSummaryAction
什么时候会改变?当收到时,行为应该像ComponentDidMount那样,不是吗?好吧,我只是觉得它是多余的,但我可以很好地理解负责人的类比。这有点不直观,但你最终明白了要点