从reducer中的操作传递数据

时间:2017-02-11 00:31:31

标签: javascript reactjs redux

如何将数据传递给reducer?

我有这样的行动

export function loginFailed(error){
return {
    type: types.LOG_IN_ERROR,
    error
  }
}

我希望我的reducer中的传递错误以及在我的视图组件中显示错误

之后
export function loginUser(credentials) {
return function(dispatch) {
    return sessionApi.login(credentials).then(response => {

            dispatch(loginFailed(response.status));

    }).catch(error => {
        throw(error);
    });
  };
}

例如,我试图传递response status

这是我的减速机

export const errorMessage = (state = null, action) => {
switch(action.type){
    case LOG_IN_ERROR:
        return action.errorMessage
    default:
        return state;
   }
}

我的观点 当我试图传递此错误时

function mapStateToProps(state, ownProps) {
return {
    errorMessage: state.error
};
}

只是this.props.errorMessage。我得到了不确定:/

希望你的帮助

1 个答案:

答案 0 :(得分:2)

你很近,只有一点点。您正在动作创建者中传递error对象。

return { type: types.LOG_IN_ERROR, error }

因此,在您的reducer中,您可以通过action.error访问该对象,而不是action.errorMessage

正如另一位用户所提到的,返回一个新对象:

return {...state, error: action.error}

在mapStateToProps中,您可以像这样访问错误道具:

function mapStateToProps(state) {
  return {
    errorMessage: state.error
  };
}