我想在项目中使用redux-saga并坚持一分。 这是一个传奇工作者功能,应使用Firebase身份验证服务登录用户。
function* emailSignIn({payload}) {
try {
const user = yield auth.signInWithEmailAndPassword(payload.email, payload.password)
yield put(signInSuccess(user)) //this line does not executed
} catch (e) {
debugger
yield put(signInFail(e))
}
}
问题是此行之后的代码无法执行 并且控制台中没有错误。我只是不明白发生了什么。
const user = yield auth.signInWithEmailAndPassword(payload.email, payload.password)
函数 auth.signInWithEmailAndPassword()返回了承诺。收益应该像等待承诺被解决或被拒绝一样等待,但是什么都没有发生。
请给我任何有关此问题的建议。
答案 0 :(得分:0)
根据docs,您需要使用从call
导出的redux-saga/effects
函数。
第一个参数是函数的function
,另一个是函数的args
。
import { call, put } from 'redux-saga/effects'
function* emailSignIn({payload}) {
try {
const user = yield call(auth.signInWithEmailAndPassword, payload.email, payload.password)
yield put(signInSuccess(user))
} catch (e) {
debugger
yield put(signInFail(e))
}
}