我正在使用React,并希望从表单中检索POST参数(见下文):
<form ref='form' className="form">
<input type="text" className="signup-input" />
<input type="text" className="signup-input" />
<button className="btn btn-primary" onClick={this._onSubmitClick}>Submit</button>
</form>
在_onSubmitClick
回调中,我希望获得与调用$(".form").serialize()
相同但不使用JQuery的结果。
答案 0 :(得分:11)
var elements = this.refs.form.getDOMNode().elements;
为您提供一个包含每个input
节点的对象,然后您可以迭代这些节点。
答案 1 :(得分:6)
除了答案,我认为有人会喜欢这个;)
export default class LoginView extends React.Component {
handleSubmit(evt) {
const formData = Array.from(evt.target.elements)
.filter(el => el.name)
.reduce((a, b) => ({...a, [b.name]: b.value}), {});
console.log(formData);
evt.preventDefault();
return false;
}
render() {
return (<form onSubmit={this.handleSubmit}>...</form>)
}
}
答案 2 :(得分:2)
您可以在每个ref
上放置input
:
<form ref='form' className="form">
<input type="text" ref="firstName" className="signup-input" />
<input type="text" ref="lastName" className="signup-input" />
<button className="btn btn-primary" onClick={this._onSubmitClick}>Submit</button>
</form>
然后使用React.findDOMNode
在_onSubmitClick
中访问它们:
_onSubmitClick: function() {
var firstName = React.findDOMNode(this.refs.firstName).getValue();
var lastName = React.findDOMNode(this.refs.lastName).getValue();
// ...
}