Получите ответ вместо ошибки в саге о редуксе - PullRequest
0 голосов
/ 31 января 2019

Я хотел бы знать, как я могу обработать ответ об ошибке в Redx Saga, я все еще учусь, и я делаю это:

export function* loginUserSaga(action) {
 try {
  const user = action.payload
  const responseData = yield call(loginUser, user);
  yield put(succeededLoginRequest(responseData));
 } catch (e) {
  yield put(failedLoginRequest(e.message));
 }
}

Если есть другой способ справиться с этим, чтобы я могполучить ответ вместо ошибки?Как я видел в документации, обычно вы используете try catch для отправки запросов к API

1 Ответ

0 голосов
/ 31 января 2019

Try..catch обычно является способом, но вы можете изменить свой ответ loginUser, чтобы он возвращал объект с полями ответа / ошибки, а затем использовать условие вместо try..catch.

Этопример из документов (https://redux -saga.js.org / docs / basics / ErrorHandling.html ):

import Api from './path/to/api'
import { call, put } from 'redux-saga/effects'

function fetchProductsApi() {
  return Api.fetch('/products')
    .then(response => ({ response }))
    .catch(error => ({ error }))
}

function* fetchProducts() {
  const { response, error } = yield call(fetchProductsApi)
  if (response)
    yield put({ type: 'PRODUCTS_RECEIVED', products: response })
  else
    yield put({ type: 'PRODUCTS_REQUEST_FAILED', error })
}
...