当我的React组件卸载时,我想dispatch
采取一些措施。在使用挂钩时,不能使用componentWillUnmount
。相反,我使用的是useEffect
钩子:
const dispatch = useDispatch();
useEffect(() => () => dispatch(setValue()), []);
以上代码引发警告“ React Hook useEffect缺少依赖项:'dispatch'。要么包含它,要么删除依赖项数组”。我不能在依赖项数组中包含dispatch
,因为它将useEffect
更改时使dispatch
运行,但是我希望它仅在组件卸载时才运行。为此,我需要传递一个空数组。
如何在不删除babel相应的掉毛规则的情况下解决此警告?
答案 0 :(得分:1)
dispatch
不应更改,这是redux存储提供的调度功能。 react hook短绒只是将其视为功能,但是警告您 可能会被突变。我认为您虽然语法错误,但缺少括号。我认为应该是
useEffect(() => () => dispatch(setValue()), []);
不过,如有必要,您可以忽略该行的规则
// eslint-disable-next-line react-hooks/exhaustive-deps
用法
// eslint-disable-next-line react-hooks/exhaustive-deps
useEffect(() => () => dispatch(setValue()), []);
或(IMO更容易阅读)
useEffect(() => {
return () => dispatch(setValue());
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);