render
方法中的代码表示任何给定时间的组件.
<select value="Radish">
<option value="Orange">Orange</option>
<option value="Radish">Radish</option>
<option value="Cherry">Cherry</option>
</select>
因此,使用表单控件有两种解决方案:
- Controlled Components使用组件
state
反映用户的 Select .这提供了最多的控制,因为对state
所做的任何更改都将反映在组件的渲染中:
例子:
var FruitSelector = React.createClass({
getInitialState:function(){
return {selectValue:'Radish'};
},
handleChange:function(e){
this.setState({selectValue:e.target.value});
},
render: function() {
var message='You selected '+this.state.selectValue;
return (
<div>
<select
value={this.state.selectValue}
onChange={this.handleChange}
>
<option value="Orange">Orange</option>
<option value="Radish">Radish</option>
<option value="Cherry">Cherry</option>
</select>
<p>{message}</p>
</div>
);
}
});
React.render(<FruitSelector name="World" />, document.body);
JSFiddle:http://jsfiddle.net/xe5ypghv/
Uncontrolled Components另一个选项是不控制值,只响应onChange
个事件.在这种情况下,可以使用defaultValue
props 设置初始值.
<div>
<select defaultValue={this.state.selectValue}
onChange={this.handleChange}
>
<option value="Orange">Orange</option>
<option value="Radish">Radish</option>
<option value="Cherry">Cherry</option>
</select>
<p>{message}</p>
</div>
http://jsfiddle.net/kb3gN/10396/
这方面的文档很棒:http://facebook.github.io/react/docs/forms.html个
使现代化
使用(1)选项创建(Redux)是受控组件.这涉及connect
和mapStateToProps
函数,这比听起来容易,但如果你刚开始的话,可能会有点过头.