Лучшая практика для обработки ошибок в Redux и React

У меня есть асинхронная функция в моих действиях редукса, и она возвращает такой объект в моем редукторе:

{
user: {},
fetching: false,
fetched, false,
error: null
}

Таким образом, в основном, когда я начинаю вызывать асинхронную функцию, я обновляю состояние избыточности на fetching: true и если результат успешно выполнен, то fetched:true а также fetching:false
Поэтому я сопоставляю состояние редукса с реквизитами, используя connect в response-redux, и я добавил это в функцию рендеринга моего компонента:

if(this.props.fetched) {
  // Go to next page
}

И он автоматически переходит на следующую страницу после получения данных.
Однако у меня проблема с обработкой ошибок. Когда ошибка изменяется с нуля на ошибку, то как мне обработать обработку ошибок на моем компоненте реакции. Что у меня сейчас есть:

if(this.props.error != null) {
   // popup error
} 

Но теперь я попадаю в ситуацию, когда в следующий раз, когда я вызываю свое действие, ему уже присвоено this.props.error для ошибки, и оно не равно NULL, в результате чего отображается всплывающее окно, даже если ошибки нет.
Должен ли я сбрасывать свою ошибку каждый раз, когда она отображается, или есть лучшая практика делать все это?

2 ответа

Решение

Промежуточное программное обеспечение redux-catch можно использовать для регистрации ошибок редукторов и промежуточного программного обеспечения Redux.

Вы можете использовать что-то вроде,

import reduxCatch from 'redux-catch';

function errorHandler(error, getState, lastAction, dispatch) {
    //dispatch ERROR action as you need.
}

const store = createStore(reducer, applyMiddleware(
  reduxCatch(errorHandler)
));

И отобразите всплывающее окно с ошибкой при получении действия ERROR, которое запускается из redux-catch промежуточное программное обеспечение. Когда вы закрываете всплывающее окно, отправьте действие, которое сбрасывает ошибку до нуля, чтобы всплывающее окно не отображалось, если нет ошибок для отображения.

У меня была похожая проблема, когда модал продолжал отображать старые ошибки после закрытия модального режима. Я решил это, отправив действие "resetErrors" после того, как получил успешный ответ.

Я не нашел лучшего решения, кроме как "перезагружать" его каждый раз.

Другие вопросы по тегам