尝试从mapDispatchToProps调度的动作创建者返回承诺

时间:2018-07-22 18:59:02

标签: javascript reactjs redux promise

我有一个像这样的动作创作者。

export const register = user => {
  return dispatch => {
    dispatch(requestRegistation());
    return new Promise((resolve, reject) => {
      Axios.post(make_url('/users'), { user: user }).then(response => {
        if (response.data.errors) {
          reject(response.data.errors);
        }
        if (response.data.user) {
          resolve(response.data.user);
        }
      });
    });
  };
};

,我有这样的表格。

handleSubmit: (values, props) => {
  props.props.register(values).then(
    response => {
      console.debug('response', response);
    },
    errors => {
      console.debug('errors', error);
    },
  );
}
const mapDispatchToProps = (dispatch, ownProps) => {
  return {
    register: user => {
      dispatch(register(user));
    },
  };
};

看来,我似乎没有退还诺言。

signup.js:186 Uncaught (in promise) TypeError: Cannot read property 'then' of undefined

signup.js:186相对于props.props.register(values).then(

我跌倒了,好像我快要走了,但是我不确定我在这里想念什么吗?

1 个答案:

答案 0 :(得分:1)

您没有从register中的mapDispatchToProps函数返回承诺。您可以删除函数主体以使返回值隐式,也可以添加return语句。

const mapDispatchToProps = (dispatch, ownProps) => {
  return {
    register: user => dispatch(register(user)),
  };
};
相关问题