繁体   English   中英

如何修复 React Redux 和 React Hook useEffect 缺少依赖项:'dispatch'

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM