如何在Redux Saga生成器函数中调用cognito密码重置action?
问题排查与解决方案
核心原因
你在saga中直接调用action creator不会自动触发dispatch,和组件中通过mapDispatchToProps调用的逻辑有本质区别:
- 组件中调用
forgotPwd时,mapDispatchToProps已经默认把action creator的返回值(即action对象)自动dispatch到store,所以可以直接执行 - saga中没有自动dispatch的包装,必须使用saga提供的
puteffect来派发action
正确写法
首先确认你已经从redux-saga/effects中导入了put:
import { put } from 'redux-saga/effects'
然后把你的调用修改为:
yield put(cognitoActions.forgotPwd(email))
若修改后仍无响应,按以下顺序排查
- 确认
cognitoActions.forgotPwd返回的action type和对应监听逻辑的匹配性:检查你监听forgotPwd动作的takeEvery/takeLatest等effect中,填写的action type是否和该action creator返回的type完全一致 - 确认代码执行路径:在你新增的yield行前添加日志输出,确认前面的逻辑没有抛出异常、没有进入其他分支,该行代码确实被执行
- 若
forgotPwd是thunk类型的异步action:需要确认你的redux配置同时启用了redux-thunk和redux-saga中间件,thunk中间件的注册顺序要在saga之前 - 检查导入正确性:确认
put是从redux-saga/effects正确导入,没有拼写错误或者引入路径错误
内容的提问来源于stack exchange,提问作者sao
相关产品推荐
相关产品推荐

