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
}, []);
否,禁用它不是反模式。当钩子输入被错误地保留为空时,该规则用于修复错误。如果您认为效果应该运行一次,那么应该按照您的方式执行。