var MySelect=React.createClass({
更改:函数(){
返回document.querySelector('#lang').value;
},
render:function(){
返回(
<;div>;
<;选择id=“lang”>;
<;option value=“select”onChange={this.change}>;选择<;/option>;
<;option value=“Java”onChange={this.change}>;Java<;/option>;
<;option value=“C++”onChange={this.change}>;C++<;/option>;
<;/select>;
<;p>;lt;/p>;
<;p值={this.change}>;<;/p>;
<;/div>;
);
}
});
React.render(<;MySelect/>;,document.body);
onChange事件不起作用
更改事件在上触发<;选择>元素,而不是<;选项>元素。然而,这不是唯一的问题。您定义change函数的方式不会导致组件的重新加载。看起来您可能还没有完全掌握React的概念,所以“在React中思考”可能会有所帮助
必须将选定值存储为状态,并在值更改时更新状态。更新状态将触发组件的重新加载
var MySelect=React.createClass({
getInitialState:函数(){
返回{
值:“选择”
}
},
更改:功能(事件){
this.setState({value:event.target.value});
},
render:function(){
返回(
<;div>;
<;select id=“lang”onChange={this.change}value={this.state.value}>;
<;option value=“select”>;选择<;/option>;
<;option value=“Java”>;Java<;/option>;
<;option value=“C++”>;C++<;/option>;
<;/select>;
<;p>;lt;/p>;
<;p>;{this.state.value}<;/p>;
<;/div>;
);
}
});
React.render(<;MySelect/>;,document.body);
还要注意<;p>元素没有值属性。React/JSX只是复制了众所周知的HTML语法,它没有引入自定义属性(除了key和ref)。如果希望所选值成为的内容<;p></元素,然后简单地放入其中,就像处理任何静态内容一样
了解有关事件处理、状态和窗体控件的详细信息:
- http://facebook.github.io/react/docs/interactivity-and-dynamic-uis.html
- http://facebook.github.io/react/docs/forms.html