我正在使用React和Redux创建一个带有Google Firebase的登录系统。我正在尝试了解如何使用thunks。我正在从React组件调用我的操作createUser,但是我无法成功地处理回调。
下面是我从其中调用操作的组件函数:
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"
});
}以下是操作:
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:
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组件中的适当位置停止执行?
发布于 2017-01-20 23:35:54
您可以在此处查看此实现
当我们读取用户身份验证时创建服务,并在将用户状态设置为Redux https://github.com/x-team/unleash/blob/develop/app/services/authService.js
https://github.com/x-team/unleash/blob/develop/app/actions/UserActions.js时将值设置为redux https://github.com/x-team/unleash/blob/develop/app/services/authService.js
最重要的部分是authService,有任何问题请告诉我
https://stackoverflow.com/questions/41754932
复制相似问题