求助解决React Hook useEffect缺少'dispatch'依赖的警告问题
解决React Hook useEffect缺少'dispatch'依赖的警告
嘿,我来帮你搞定这个烦人的React Hook警告!这个警告是ESLint的react-hooks/exhaustive-deps规则触发的,它要求useEffect的依赖数组必须包含所有在effect内部用到的外部变量——这里你用到了dispatch,但没把它放进依赖数组里。
下面给你两种最常用的解决方法:
方法一:将dispatch加入依赖数组(推荐)
这是最符合React Hook规范的做法。其实useDispatch返回的dispatch函数在组件的整个生命周期内都是同一个引用,把它加入依赖数组并不会导致useEffect不必要地重复执行。修改后的代码如下:
function Register(props) { const inusers = useSelector((state) => state); const history = useHistory(); const dispatch = useDispatch(); useEffect(() => { dispatch(fetchUser()); }, [dispatch]); // 在这里加入dispatch作为依赖 // 其他组件逻辑... }
方法二:用ESLint注释忽略警告(不推荐,除非你确定没问题)
如果你不想修改依赖数组,可以在useEffect末尾添加ESLint注释来跳过这个规则检查,但这种方式相当于绕开了规则的提示,可能会埋下潜在的问题,所以只在你明确知道dispatch不会变化的情况下使用:
function Register(props) { const inusers = useSelector((state) => state); const history = useHistory(); const dispatch = useDispatch(); useEffect(() => { dispatch(fetchUser()); }, []); // eslint-disable-line react-hooks/exhaustive-deps // 其他组件逻辑... }
简单总结下:优先选方法一,既满足规则要求,又不会有任何副作用,是最稳妥的解决方案。
内容的提问来源于stack exchange,提问作者Aniket Deshpande
相关产品推荐
相关产品推荐

