Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.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/2/python/317.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/2/apache-kafka/3.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 如何使用deps lint规则实现装载/卸载效果_Reactjs_React Hooks_Eslint - Fatal编程技术网

Reactjs 如何使用deps lint规则实现装载/卸载效果

Reactjs 如何使用deps lint规则实现装载/卸载效果,reactjs,react-hooks,eslint,Reactjs,React Hooks,Eslint,我很难理解如何使用react hooks/deps执行与componentDidMount和componentWillUnmount等效的操作,因为我的应用程序中有lint规则。例如,在加载一个组件时,我想加载一些数据,并在完成后将其清除。所以我可以写一些类似的东西 React.useEffect(() => { loadDataById(id, other, properties); return () => { resetDataById(id); }; },

我很难理解如何使用
react hooks/deps执行与
componentDidMount
componentWillUnmount
等效的操作,因为我的应用程序中有lint规则。例如,在加载一个组件时,我想加载一些数据,并在完成后将其清除。所以我可以写一些类似的东西

React.useEffect(() => {
  loadDataById(id, other, properties);
  return () => {
    resetDataById(id);
  };
}, []);

现在的问题是,我们已经包括了反作用钩皮棉规则。这表明我需要在本例的依赖项列表中包括
id
other
properties
。但是如果我这样做,当
其他
属性
更改时,将调用
loadDataById
resetDataById
方法,但我只希望在加载/卸载组件时调用这些方法。我已经退回到只在那些特定的行上禁用lint规则,但这似乎是一种反模式,在我们的应用程序中相当常见。

如果您认为您的钩子应该只运行一次,并且只运行一次,即使依赖项发生了变化。您始终可以使用注释指令忽略该eslint规则,如下所示:

React.useffect(()=>{
loadDataById(id、其他、属性);
return()=>{
重置数据库id(id);
};
//eslint禁用下一行react HOOK/deps
}, []);

否,禁用它不是反模式。当钩子输入被错误地保留为空时,该规则用于修复错误。如果您认为效果应该运行一次,那么应该按照您的方式执行。