繁体   English   中英

如何使用Redux触发子组件中的表单提交?

[英]How to trigger a form submit in child component with Redux?

我有一个这样的Form组件:

var React = require('react'),
  ReactRedux = require('react-redux');


var Form = React.createClass({
  render: function(){
    return (
      <form onsubmit={this.onsubmit} action={this.props.action}>
      {this.props.children}
      </form>
    );
  },
  // Method for parent component to call
  submit: function() {
    // do submission and return Promise so caller can take actions
  },
  onsubmit: function(e) {
    // validation, make requests, etc
  }
});

function mapStateToProps(state) {
  return state;
}

module.exports = ReactRedux.connect(mapStateToProps)(Form);

在我的组件渲染中,我有<Form id="paymentform" ref="form" action="/self">

我不能这样做this.refs.form.submit(); 因为this.refs.form指向连接器。 据我了解,连接器是减速器更新道具的漏斗,但这样做不能触发submit调用。

用例基本上是从另一个动作提交表单,这将启动Form组件应该执行的操作,例如验证和XHR请求。

我可以做React.findDOMNode(this.refs.form).submit()但是这并没有回答从外部命中组件方法的实际问题。

我在这做错了什么?

如有必要,您可以使用getWrappedInstance获取包装的组件实例:

this.refs.form.getWrappedInstance().submit()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM