redux saga,带有返回promise的函数的yield不起作用

问题描述 投票:0回答:1

我想在我的项目中使用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()返回Promise。当收益被解决或被拒绝时,收益应该像等待一样等待,但是什么都没有发生。

请给我任何有关此问题的建议。

redux-saga
1个回答
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))
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.