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

标签 javascript reactjs redux

我有一个这样的表单组件:

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指向连接器。据我了解,连接器是 reducer 更新 Prop 的 channel ,但是这样做不能触发对 submit 的调用。 .

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

我能做到React.findDOMNode(this.refs.form).submit()但这并没有回答从外部访问组件方法的实际问题。

我在这里做错了什么?

最佳答案

可以获取包装好的组件实例,如果需要,with getWrappedInstance :

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

关于javascript - 如何使用 Redux 在子组件中触发表单提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33000354/

相关文章:

javascript - 电子邮件验证 : JavaScript

javascript - v-model 更改时 watch 不触发

reactjs - Redux 状态应该如何剖析?

css - React 没有渲染新的 css 样式

javascript - 如何在 JavaScript 中实现步进决策流程?

javascript - React Redux(在单个文件中)在存储更改后不调用 render()

javascript - 在 react/redux 中传递多个 props 和 action

javascript - Angular2 - 检查后表达式已更改 - 通过调整大小事件绑定(bind)到 div 宽度

javascript - 将鼠标悬停在 Shiny 中的元素上时如何更改情节?

javascript - React props : Should I pass the object or its properties? 有多大区别?