redux-saga 回调中执行 put的例子
发布时间:01/15 来源: 浏览:
关键词:
下面是一段非常的简单的关于redux-saga 回调中执行 put的例子,这个例子可以让各位清楚关于redux-saga 回调中执行 put实现过程。
在 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。