【问题标题】:Why is Redux Form not setting the value for submitting?为什么 Redux Form 没有设置提交的值?
【发布时间】:2017-07-23 23:51:00
【问题描述】:

下面是我的RequestAnInviteredux-form。问题是当我提交表单时,submitting 永远不会更改为true。可以看到我下面有一个日志,一直在输出false

当我提交表单时,我在 redux-form 上做错了什么导致提交永远不会设置为 true?

class RequestAnInvite extends React.Component {

  componentDidMount() {
    this.props.dispatch(loadTitles());
  }

  handleSubmit(data) {
    console.log(data);this.props.dispatch(requestInvitationsActions.createInvitationRequest(data));
  }

render() {
  const { handleSubmit, submitting } = this.props;

  console.log('submitting: ' + submitting);

    return (
      <div className="container-fluid h-100">  
        <form onSubmit={handleSubmit(this.handleSubmit.bind(this))}>
          <Field
            name="email"
            type="text"
            component={renderField}
            label="Email"
            placeholder="xxx@acme.com"
          />

        <p>submitting: {submitting}</p>

          <div className="form-group form-group-actions">
            <button type="submit" className="btn btn-primary" disabled={submitting}>
              {submitting ? 'Requesting...' : 'Request an Invite'}
            </button>
          </div>

        </form>
      </div>
    );
  }

}


RequestAnInvite = reduxForm({
  form: 'RequestAnInvite',
  validate,
})(RequestAnInvite);

const mapStateToProps = state => {
  return {
    titles: state.titles
  };
};

const mapDispatchToProps = (dispatch) => bindActionCreators({
  ...requestInvitationsActions,
}, dispatch)

export default connect(mapStateToProps, mapDispatchToProps)(RequestAnInvite);

更新 1

  handleSubmit(data) {
    this.props.createInvitationRequest(data)
      .then((response) => {
        console.log(response)
      }, (error) => {
    });
  }

【问题讨论】:

    标签: reactjs react-redux redux-form react-redux-form


    【解决方案1】:

    来自 redux-form 文档:

    您的表单当前是否正在提交。只有当你传递了一个返回 promise 的 onSubmit 函数时,这个 prop 才会起作用。在 Promise 被解决或被拒绝之前,这将是真的。

    您的handleSubmit 只是发送一个动作,所以它无法知道它何时提交

    【讨论】:

    • 感谢您的回答。我试过你的建议,见上面UPDATE 1,提交的值仍然没有变化……我执行你的建议错了吗?
    • @AnApprentice 如果你这样做 return this.props.createInvitation... 它应该可以工作
    • 确实做到了!谢谢
    猜你喜欢
    • 1970-01-01
    • 2018-08-16
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 2017-07-25
    • 1970-01-01
    相关资源
    最近更新 更多