0

这只是一个问题,我很想仔细检查我是否做对了。我来自不同框架的年龄,我想在早期避免不良做法。

我正在使用这个样板:https ://github.com/erikras/react-redux-universal-hot-example 我正在用 ES7 编写。

我创建了: - 1 个减速器:earlyUser.js - 1 个容器:landingPage.js - 1 个组件:registrationForm.js

在landingPage 中,我以这种方式包含reducer 的方法:

从 'redux/modules/earlyUser' 导入 { saveEmail, savePreferences, checkEmailExists };

我声明了一些句柄

 handleSubmitEmail(data) {
    this.props.saveEmail(data);
 }

 handleSubmitPreferences(data) {
    //some data manipulation
    this.props.savePreferences(data);
 }

在 JSX 部分,我只是将处理程序传递给我的组件:

<registrationForm submitEmail= {::this.handleSubmit}   etc... >

现在在组件内部,我将表单提交链接到这个处理程序:

submitEmail() {
    if (this.validateEmail(this.state.email)) {
      this.props.submitEmailHandler(this.state);
    }
  }

现在我的问题是,我应该在哪里附加承诺返回的 .then 和 .catch ?理想情况下,我想在 component.js 中做类似的事情

this.props.submitEmailHandler(this.state).then( function emailRegisterCallback(){
   // move to next step
}).catch( function errorHandler(error){
  // there was an error
}

那是对的吗?

此外,是否有正确的语法来处理 ES7 中的承诺?

4

1 回答 1

1

您通常在动作创建者中处理异步方面:

请参阅async redux 示例中的此代码:

function fetchPosts(reddit) {
  return dispatch => {
    dispatch(requestPosts(reddit));
    return fetch(`http://www.reddit.com/r/${reddit}.json`)
      .then(response => response.json())
      .then(json => dispatch(receivePosts(reddit, json)));
  };
}

当 Promise 解决时,您应该发送另一个操作以使用成功结果或错误更新状态。

于 2015-10-25T05:00:47.377 回答