Как перевести ошибки, возникающие в redux-саге? - PullRequest
0 голосов
/ 29 октября 2018

У меня вопрос, как перевести ошибки, которые отлавливаются в redux-саге. Как дела в React-Redux?

Я пытаюсь сделать это так:

catch (error) {
  if(error.response.payload.error==='Unauthorized'){
        Alert.error(<FormattedMessage {...messages.unauthorizedMessage} />, {
          html: false,
        });
  }

1 Ответ

0 голосов
/ 29 октября 2018

В блоке saga catch отправьте действие:

// saga:
catch(error) {
  if(error.response.payload.error==='Unauthorized'){
    yield put({ 
      type: 'UNAUTHORIZED_REQUEST',
      message: messages.unauthorizedMessage
    })
  }
}

Затем в редукторе обновите состояние на основе действия:

const requestError = (state = null, { type, message }) => {
    case 'UNAUTHORIZED_REQUEST':
        return message;
    default:
        return state;
}

Затем компонент должен отобразить сообщение об ошибке, чтобы отразить обновленное состояние:

let MyComponent = ({ requestError }) => {
    return (
        <div>
            {requestError &&
                <MyErrorMessage message={requestError} />
            }

            {/* ... */}
        </div>
    )
}

MyComponent = connect(
    state => ({
        requestError: state.requestError
    })
)(MyComponent)
...