reactjs - 在 redux saga 中获取响应而不是错误

标签 reactjs redux redux-saga

我想知道如何处理 redux 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 发出请求

最佳答案

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 })
}

关于reactjs - 在 redux saga 中获取响应而不是错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54452178/

相关文章:

javascript - 无法添加主屏幕图标来创建 React 应用程序

reactjs - 在react组件/redux工具包之外的函数中使用useDispatch

redux - NGRX 效果中的多个操作

javascript - react : timeout call to Firebase

react-redux - 如何在 redux-saga 中测试异步 axios 请求?

javascript - 如何在 redux saga 中测试功能选择器?

reactjs - redux-saga 中的重试功能

javascript - 向空对象添加新键值对抛出 TypeError is null 错误

javascript - react 事件 : onMouseUp not firing after onMouseEnter event

javascript - 授权时无法提取授权码