我还在学习redux-saga
,但仍然遇到了2个问题。
这是我的代码:
问题是:
Actions must be plain objects. Use custom middleware for async actions
任何解决方案?
答案 0 :(得分:0)
我看到的一些问题:
function* rootSaga() {
yield [
takeLatest(actions.authRequest, doSignIn),
];
}
takeLatest第一个参数是匹配的“模式”,而不是动作。所以你真的想要这样的东西:
takeLatest(AUTH_REQUEST, doSignIn)
如果是字符串,如果action.type === pattern(例如take(INCREMENT_ASYNC)
,则匹配该操作
对于问题1 Actions must be plain objects. Use custom middleware for async actions
,永远不要将函数传递给put
。你的doSignIn传奇看起来应该更像
export function* doSignIn() {
try {
yield put(actions.sendingRequest());
const { email, password } = yield put(actions.authRequest());
你可以在传奇中稍后正确地执行put效果,所以请确保始终这样做。
我对数字2的问题不是100%肯定。看看上述建议是否有帮助。
答案 1 :(得分:0)
re:问题的第二部分:
您没有提供任何按钮代码,但是常见的失败是如何将功能分配给按钮。
onPress={this.function()}
触发而没有被按下。
onPress={this.function}
在按下时触发。
onPress={() => {this.function()}}
在按下时触发。