小编典典

Redux-Saga中的承诺

reactjs

我在这里找到了相同的问题,但是我没有找到正确的答案。

我正在使用CRUD操作开发一个简单的应用程序。在编辑页面上,安装组件(componentDidMount())后,应用将调度一个操作以检索特定的帖子详细信息:

dispatch({ type: FETCH_POST, id: 'post-id' })

我正在使用 redux-saga, 并希望以上调用返回Promise,以便我可以访问API响应。

现在,没有回调/承诺,我最终在商店中定义了一个新状态(如post_edited),并将其连接/映射到组件中的props进行编辑页面。

处理这种情况的最佳方法是什么?


阅读 305

收藏
2020-07-22

共1个答案

小编典典

您能否提供有关您的问题的更多信息?我不确定我是否能正确理解您的问题,但是常见的做法是:

API.js

function apiCallToFetchPost(id) {
  return Promise.resolve({name: 'Test});
}

postSaga.js

function* fetchPostSaga({id}) {
  try {
    const request = yield call(apiCallToFetchPost, id);
    // -> in post reducer we will save the fetched data for showing them later 
    yield put({type: FETCH_POST_SUCCESS, payload: request}); 
  } catch (error) {
    yield put({type: FETCH_POST_SUCCESS_FAILURE, error})
  }
}

export function* onBootstrap() {
  yield takeLatest(FETCH_POST, fetchPostSaga);
}
2020-07-22