[英]How to fix React Redux and React Hook useEffect has a missing dependency: 'dispatch'
React Hook useEffect 缺少一个依赖项:'dispatch'。 要么包含它,要么移除依赖数组 react-hooks/exhaustive-deps
我在这样的功能组件上使用来自 React Redux 的useDispatch()
Hook:
const Component = () => {
const dispatch = useDispatch();
const userName = useSelect(state => state.user.name);
useEffect(() => {
dispatch(getUserInformation());
}, [userId]);
return (
<div>Hello {userName}</div>
);
};
export default Component;
如何在不删除依赖数组 react-hooks/exhaustive-deps 的情况下删除此警告,这对于避免其他错误很有用。
为了避免该警告,只需将dispatch
添加到依赖项数组即可。 这不会调用重新渲染,因为调度值不会改变。
const Component = () => {
const dispatch = useDispatch();
const userName = useSelect(state => state.user.name);
useEffect(() => {
dispatch(getUserInformation());
}, [userId, dispatch]);
return (
<div>Hello {userName}</div>
);
};
export default Component;
React Hook useEffect缺少依赖项:“ dispatch”。 要么包含它,要么删除依赖项数组react-hooks / exhaustive-deps
我在类似这样的功能组件上使用React Redux的useDispatch()
Hook:
const Component = () => {
const dispatch = useDispatch();
const userName = useSelect(state => state.user.name);
useEffect(() => {
dispatch(getUserInformation());
}, [userId]);
return (
<div>Hello {userName}</div>
);
};
export default Component;
如何在不删除依赖关系数组react-hooks / exhaustive-deps的情况下删除此警告,这对于避免其他错误很有用。
React Hook useEffect缺少依赖项:“ dispatch”。 要么包含它,要么删除依赖项数组react-hooks / exhaustive-deps
我在类似这样的功能组件上使用React Redux的useDispatch()
Hook:
const Component = () => {
const dispatch = useDispatch();
const userName = useSelect(state => state.user.name);
useEffect(() => {
dispatch(getUserInformation());
}, [userId]);
return (
<div>Hello {userName}</div>
);
};
export default Component;
如何在不删除依赖关系数组react-hooks / exhaustive-deps的情况下删除此警告,这对于避免其他错误很有用。
只需将dispatch
添加到您的依赖数组或使依赖数组为空。
第一种情况:
const Component = () => {
const dispatch = useDispatch();
const userName = useSelect(state => state.user.name);
useEffect(() => {
dispatch(getUserInformation());
}, [userId, dispatch]);
return (
<div>Hello {userName}</div>
);
};
export default Component;
第二种情况:
const Component = () => {
const dispatch = useDispatch();
const userName = useSelect(state => state.user.name);
useEffect(() => {
dispatch(getUserInformation());
}, []);
return (
<div>Hello {userName}</div>
);
};
export default Component;
通过添加这些依赖项,您的 useEffect 可能会导致重新渲染或根本不重新渲染。 这完全取决于您的数据和使用它的环境。
无论如何,如果您不希望同时遵循上述两种方法,那么 //ts-ignore 可以工作,但我不建议这样做,因为从长远来看这可能会产生错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.