2017-01-20 6 views
0

Я использую React и Redux для создания системы входа с помощью Google Firebase. Я пытаюсь понять, как использовать thunks. Я вызываю свое действие createUser из моего компонента React, однако я не могу успешно обработать обратный вызов.Thunks in React-Redux - не разрешение?

Вот функция компонента Я зову действие от:

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))); 
    } 
} 

И мой Разбавление:

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; 
    } 

}

Я знаю запрос на firebase Google в порядке, потому что создатель действия createUserSuccess уволен. Почему прекращение выполнения в соответствующем месте в моем компоненте React?

+0

Вы можете обновить свой контейнер здесь? –

+0

Если в обратном вызове catch обнаружена ошибка, после вызова 'createUserSuccess (user)' может быть что-то в этой функции или ваш редуктор, который генерирует исключение. Не могли бы вы поделиться своим кодом редуктора? –

+0

@NikolajDamLarsen Я тоже так думал, но я не мог найти ничего плохого в моем коде редуктора. Я добавил его выше. – mbrashid62

ответ

0

Вы можете проверить здесь эту реализацию

Наиболее важной частью является authService, дайте мне знать любой вопрос

 Смежные вопросы

  • Нет связанных вопросов^_^