一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

redux-saga 回调中执行 put的例子

时间:2016-06-16 编辑:简简单单 来源:一聚教程网

在 redux-saga 下,

 代码如下 复制代码
postWithLoadingEffect(API.user, user).then(
    (response) => {
      console.log(response)
      // yield put(userActions.setCurrentUser(response.data))
    }
  ).catch(
    (error) => {
      console.error(error)
    }
  )

yield put 放在回调中是不会执行的,因为回调函数并不是 generator 函数。

但这种需求在实际代码里会经常出现。我们可以绕个圈子实现它:

 代码如下 复制代码
  try {
    let response = yield call(postWithLoadingEffect, API.user, user)
    if (response) {
      console.log(response)
      window.localStorage.setItem('authToken', response.meta.jwt)
      yield put(userActions.setCurrentUser(response.data))
    }
  } catch (error) {
    console.error(error)
  }

call 是 redux-saga 提供的一个 effect,它会执行传递给它的函数。这样我们就取得了结果,可以正常使用 yield put。

但很多时候,我觉得在 saga 中直接使用 dispatch 会更方便,只是这样 redux-saga 的好处便又丢了 – 不如回去写 redux-thunk。

热门栏目