Отсутствует зависимость: 'отправка' в React - PullRequest
1 голос
/ 01 августа 2020

В моем приложении response / redux я использую dispatch для вызова действия, которое извлекает данные из состояния в redux каждый раз, когда компонент монтируется. Проблема возникает на useState Мой способ не работает

Ниже приведена ошибка, которую я получаю:

React Hook useEffect имеет недостающую зависимость: ' отправка ». Либо включите его, либо удалите массив зависимостей. Значения внешней области видимости, такие как getInvoiceData, не являются допустимыми зависимостями, потому что их изменение не приводит к повторной визуализации компонента react-hooks / excustive-deps

Вот мой код:

const TableSection = () => {

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

  const dispatch = useDispatch() 

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

(...)

export default TableSection;

Ответы [ 2 ]

1 голос
/ 01 августа 2020

Вам нужно добавить dispatch функцию в массив dep:

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

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

Можно безопасно добавить его в массив dep, потому что его идентичность стабильна при рендеринге, см. Docs .

Примечание: как и в useReducer React, идентификатор возвращаемой функции диспетчеризации стабилен и не изменится при повторном рендеринге (если вы не измените хранилище, передаваемое в, что было бы крайне необычно).

1 голос
/ 01 августа 2020

Это не ошибка, это просто предупреждение.

Вы можете исправить это, добавив dispatch в массив зависимостей.

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

вторая часть предупреждающего сообщения гласит , Значения внешней области, такие как 'getInvoiceData', не являются допустимыми зависимостями, потому что их изменение не приводит к повторному рендерингу компонента response-hooks / excustive-deps , вам также необходимо удалить функцию getInvoiceData из зависимости массив хука useEffect.

Все, что входит в область действия функционального компонента, который участвует в потоке данных реакции, которое вы используете внутри функции обратного вызова useEffect, должно быть добавлено в массив зависимостей useEffect hook.

Хотя в вашем случае можно безопасно опустить функцию dispatch из массива зависимостей, потому что она гарантированно никогда не изменится, но все же она не причинит никакого вреда, если вы добавите ее как зависимость.

...