首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Thunks in React-Redux - Not Resolving?

Thunks in React-Redux - Not Resolving?
EN

Stack Overflow用户
提问于 2017-01-20 10:04:10
回答 1查看 370关注 0票数 0

我正在使用React和Redux创建一个带有Google Firebase的登录系统。我正在尝试了解如何使用thunks。我正在从React组件调用我的操作createUser,但是我无法成功地处理回调。

下面是我从其中调用操作的组件函数:

代码语言:javascript
复制
registerUser() {
    let email = this.state.user.email;
    let pw= this.state.user.password;

    this.props.actions.createUser(email, pw)
        .then((user) => {
            debugger; // The async request is successful but execution doesn't pause here
        })
        .catch((error) => {
            debugger; // Instead I receive an error here that says, "Uncaught (in promise) RangeError: Maximum call stack size exceeded"
        });
}

以下是操作:

代码语言:javascript
复制
export function createUserSuccess(user) {
    debugger;
    return { type: types.CREATE_USER_SUCCESS, payload: { registeredUser: user, registerMsg: 'Successful Registration!'  }};
}

export function createUserError(error) {
    return { type: types.CREATE_USER_ERROR, payload: { registeredUser: {}, registerMsg: error.message }};
}


export function createUser(email, pw) { // async thunk
    debugger;
    return (dispatch) => {
        debugger;
        return firebase.auth().createUserWithEmailAndPassword(email, pw)
            .then((user) => {dispatch(createUserSuccess(user))}) // todo: figure out why this won't resolve
            .catch(error => dispatch(createUserError(error)));
    }
}

和我的Reducer:

代码语言:javascript
复制
import * as types from '../actions/actionTypes';
import initialState from './initialState';

export default function registerReducer(state = initialState.registeredUser, action) {
debugger;
switch (action.type) {
    case types.CREATE_USER_SUCCESS:
        return [
            ...state, // es6 spread operator - explodes all values in array
            Object.assign({}, action.payload)
        ];

    case types.CREATE_USER_ERROR:
        return [
            ...state,
            Object.assign({}, action.payload)
        ];

    default:
        return state;
  }

}

我知道对Google firebase的实际请求是OK的,因为createUserSuccess操作创建者被解雇了。为什么不在React组件中的适当位置停止执行?

EN

回答 1

Stack Overflow用户

发布于 2017-01-20 23:35:54

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41754932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档