当前位置: 首页 > 知识库问答 >
问题:

React中缺少依赖项:“dispatch”

颜昕
2023-03-14

在我的反应/redux应用程序中,我使用调度来调用每次安装组件时从redux中的状态检索数据的操作。问题正在使用状态发生我的方式不工作

下面是我得到的错误:

React Hook useEffect缺少依赖项:“dispatch”。包括它或删除依赖项数组。像“getInvoiceData”这样的外部作用域值不是有效的依赖项,因为对它们进行变异不会重新呈现组件react HOOK/DEP

这是我的密码:

const TableSection = () => {

  const invoiceData = useSelector((state => state.tables.invoiceData));

  const dispatch = useDispatch() 

  useEffect(() => {
    dispatch(getInvoiceData());
  }, [getInvoiceData]);

(...)

export default TableSection;

共有2个答案

蒲坚
2023-03-14

这不是一个错误,只是一个警告。

您可以通过在依赖数组中添加调度来解决这个问题。

useEffect(() => {
   dispatch(getInvoiceData());
}, [dispatch]); 

警告消息的第二部分指出,“getInvoiceData”等外部作用域值不是有效的依赖项,因为对它们进行变异不会重新呈现组件react hooks/deps,您还需要从useEffecthook的依赖项数组中删除getInvoiceData函数。

任何在函数组件范围内的,参与响应数据流的,您在use效应的回调函数中使用的,都应该添加到use效应钩子的依赖数组中。

尽管在您的情况下,可以安全地从依赖项数组中省略dispatch函数,因为它保证永远不会更改,但如果您将其添加为依赖项,它仍然不会造成任何伤害。

鲍宁
2023-03-14

您需要向dep数组添加dispatch函数:

const TableSection = () => {
  const dispatch = useDispatch() 

  useEffect(() => {
    dispatch(getInvoiceData());
  }, [dispatch]);

将它添加到dep数组是安全的,因为它的标识在渲染中是稳定的,请参阅文档。

注意:像在React的useReucer中一样,返回的调度函数标识是稳定的,不会在重新渲染时更改(除非您更改传递到的存储,这将是非常不寻常的)。

 类似资料:
  • 我想更新商店中的值只有一次在第一次打开时,页面首次使用反应钩子打开。为此,我做了第二个参数的使用效果'[]'空列表。没有什么可以阻止它工作,但是我从ESLint规则中得到了一个警告:React Hook用效果有一个缺失的依赖项:“ChangeCount”。要么包含它,要么删除依赖数组react-追踪器/穷举-deps。如何删除此警告?

  • 我在构建我的应用程序时遇到此问题。有人知道怎么回事吗? React Hook useEffect缺少依赖项:“conectar”。包括它或删除依赖项数组react hooks/dep

  • 在我的react/redux应用程序中,每次安装组件时,我都会调用一个操作从redux中的状态检索数据。我的方法行不通 下面是我得到的错误: React Hook use效应有一个缺失的依赖项:道具。要么包含它,要么删除依赖数组。然而,当任何道具发生变化时,“道具”都会发生变化,因此首选的修复方法是将“道具”对象的结构分解为在use效应调用之外的对象,并指称在use效应反应挂钩/穷举deps中的那

  • 我在useeffect钩子上得到以下错误。 React Hook use效应有一个缺失的依赖项:当前页面。要么包含它,要么删除依赖array.eslintreact-钩子/穷举-deps 你知道我为什么会得到这个吗? }

  • 一旦我运行下面的代码,我得到以下错误: React Hook useEffect缺少依赖项:“list”。包括它或删除依赖项数组react hooks/dep 我找不到发出警告的理由。

  • 我试图在Tomcat服务器上部署一个基于spring的web应用程序,但我无法自动连接EntityManager。根本原因是错误。 我假设我有不正确的HibernateJAR作为依赖项。任何帮助都将不胜感激 我之前看到一篇帖子指出,问题在于包含了以下依赖项,但我不包括这一项: 以下是我的POM依赖项: