我有一个这样的表单组件:
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 更新道具的渠道,但是这样做不会触发对submit
.
用例基本上是让表单从另一个操作提交,这将启动表单组件应该执行的操作,例如验证和 XHR 请求。
我可以做到React.findDOMNode(this.refs.form).submit()
,但这并不能回答从外部点击组件方法的实际问题。
我在这里做错了什么?