【发布时间】:2019-11-21 08:11:13
【问题描述】:
我有一个 linting 错误 (react-hooks/exhaustive-deps),我目前正在两行禁用该错误。我理解代码是如何违反规则的,但我不明白为什么这条规则适用于这种情况。
我希望效果仅在组件卸载时运行以进行清理。我有一个函数,clearMessages,它继承自 props,它将减速器的状态重置为空的默认状态。当我在本地运行我的项目时它工作正常,但是当我运行构建时 react-scripts 抛出上述 linting 错误并且构建失败。
这是一个简短的 sn-p,显示了导致问题的效果。
const Search = ({ clearMessages }) => {
useEffect(() => () => clearMessages(), [])
...
...
}
这是 react-scripts build 抛出的错误消息。
第 25 行:React Hook useEffect 缺少依赖项: '清除消息'。包括它或删除依赖数组。如果 'clearMessages' 变化太频繁,找到父组件 定义它并将该定义包装在 useCallback react-hooks/exhaustive-deps
我不希望clearMessages 改变,所以我不确定为什么将它作为依赖项提供很重要。我不希望只在clearMessages 的值发生变化时运行效果。
【问题讨论】:
标签: reactjs react-hooks