javascript - 使用 Redux-Saga 的 Firebase 身份验证不起作用

标签 javascript firebase react-native redux redux-saga

我正在尝试使用 firebase 身份验证创建一个新用户。我正在使用 redux-saga 进行上述调用。

下面是我的saga.js:

import { takeLatest, put } from 'redux-saga/effects';
import { SIGN_UP, AUTHENTICATION_FAILED, SIGN_UP_SUCCESS} from '../actions/index';
import firebase from 'firebase';


function* signUp(action){
    console.log("about to call authentication"); // This being printed
    firebase.auth().createUserWithEmailAndPassword(action.user.email, action.user.password)
            .then(function*(result){
                    console.log("success"); // Not being loged
                    yield put({SIGN_UP_SUCCESS, user: action.user});
            }).catch(function*(error){
                    console.log("failed"); //Not being loged
                    let error_message = { code: error.code, message: error.message};
                    yield put({AUTHENTICATION_FAILED, error: error_message});
            });
}

function* rootSaga(){
  yield takeLatest(SIGN_UP, signUp);
}

export  default rootSaga;

thencatch 中的代码没有被执行,正在调用 Sign Up 生成器函数。谁能告诉我我做错了什么?

最佳答案

一种更 redux-saga 惯用的代码编写方式如下所示:

function* signUp(action){
  try {
    const auth = firebase.auth()
    const result = yield call(
      [auth, auth.createUserWithEmailAndPassword],
      action.user.email,
      action.user.password
    )

    yield put({ type: SIGN_UP_SUCCESS, user: action.user });
  } catch (error) {
    const error_message = { code: error.code, message: error.message };

    yield put({ type: AUTHENTICATION_FAILED, error: error_message });
  }
}

请参阅https://redux-saga.js.org/docs/api/#callcontext-fn-args用于调用的文档。

关于javascript - 使用 Redux-Saga 的 Firebase 身份验证不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48181479/

相关文章:

javascript - 在 React Native 中创建一个 Theme Provider 组件

javascript - React Native 在 Android 上使用 JIT(Just in Time)编译还是解释 JavaScript 代码?

React-native 同步存储解决方案

javascript - 将 rxjs 5 重构为 rxjs 6 代码 - retryWhen

javascript - 如何在 Firebase 中重新授权用户?

javascript - 查找 Canvas 中所有黑色矩形

ios - 火力基地 |远程通知不显示,swift 3.0

Firebase 连接另一个数据库

javascript - 如何绑定(bind)方法

javascript - 如何在 Protractor 测试中读取 JSON?