所以我只是出于好奇,
任何人都能找到一种聪明的方法来处理受控组件(输入,选择......)中的双向数据绑定,而无需编写以下所有内容:
getInitialState: function() {
return {value: 'Hello!'};
},
handleChange: function(event) {
this.setState({value: event.target.value});
},
render: function() {
var value = this.state.value;
return <input type="text" value={value} onChange={this.handleChange} />;
}
答案 0 :(得分:5)
您可能需要阅读文档中的“双向绑定助手”部分: http://facebook.github.io/react/docs/two-way-binding-helpers.html
有LinkedStateMixin
:
var NoLink = React.createClass({
getInitialState: function() {
return {message: 'Hello!'};
},
handleChange: function(event) {
this.setState({message: event.target.value});
},
render: function() {
var message = this.state.message;
return <input type="text" value={message} onChange={this.handleChange} />;
}
});
var WithLink = React.createClass({
mixins: [React.addons.LinkedStateMixin],
getInitialState: function() {
return {message: 'Hello!'};
},
render: function() {
return <input type="text" valueLink={this.linkState('message')} />;
}
});
答案 1 :(得分:5)
一个值得了解的技巧 - 自onChange
事件冒出来之后,您可以将表单输入包装在容器中并注册onChange
而不是 - <form>
是完美的。
然后你可以编写一个通用的onChange
处理程序来从事件的target
中提取数据 - 你需要在字段中添加一些识别信息,这就是name
属性是无论如何。
这里有一个Gist with an example implementation和一个live demo - 形式输入状态显示在表单下方。