Как избежать «отправки» в асинхронных задачах, когда компонент размонтирован - PullRequest
0 голосов
/ 21 мая 2019

Проблема:

с использованием асинхронной задачи в обратном вызове, например:

const asyncTask = useCallback(async (data) => {
  dispatch({ type: 'FETCH' })

    try {
      const res = await MyService.asyncMethod(data)
      dispatch({ type: 'SUCCESS', data: res })
    } catch (e) {
      dispatch({ type: 'ERROR' }) // This dispatch throw this error in jest
    }
 }, [])

Когда компонент размонтируется до разрешения MyService.asyncMethod, он вызывает dispatch, пытаясь изменитьсостояние не смонтированного компонента.

Возможно, в реальном мире это просто предупреждение, а не ошибка.Однако, использование jest вызывает эту ошибку:

TypeError: Cannot read property 'body' of null

Эта функция использует внутри dispatch реакции (useReducer):

https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/client/getActiveElement.js

Как безопасно выполнить диспетчер в асинхронных задачах?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...