使用React JS作为下拉列表的OnChange事件

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事件不起作用

更改事件在上触发<选择&gt元素,而不是<选项&gt元素。然而,这不是唯一的问题。您定义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);

还要注意&lt;p&gt元素没有属性。React/JSX只是复制了众所周知的HTML语法,它没有引入自定义属性(除了keyref)。如果希望所选值成为的内容&lt;p&gt</元素,然后简单地放入其中,就像处理任何静态内容一样

了解有关事件处理、状态和窗体控件的详细信息:

  • http://facebook.github.io/react/docs/interactivity-and-dynamic-uis.html
  • http://facebook.github.io/react/docs/forms.html

发表评论