ReactJS下拉菜单(使用Semantic UI)不会触发onChange事件?

时间:2015-06-28 22:39:48

标签: javascript reactjs semantic-ui


在过去的几个小时里,我一直在努力尝试使用ReactJS和Semantic UI来实现简单的下拉更改事件。根据我的理解,当选择了不同的选项时,元素的onChange属性应该触发它绑定的事件处理程序。这是我的代码:

var DictionarySelector = React.createClass({
    getInitialState: function() {
        return  {value: ""}
    },
    handleChange: function(e) {
        this.setState({value: e.target.value});
        console.log('Dropdown changed');
        return;
    },
    render: function() {
        return (
            <div className="ui form" style={{marginTop:'55px'}}>
                <div className="field">
                    <select className="ui dropdown" onChange={this.handleChange} value={this.state.value}>
                        <option value="">Select Dictionary</option>
                        <option value="1">Dictionary 1</option>
                        <option value="2">Dictionary 2</option>
                     </select>
                 </div>
             </div>
         );
     }
 });

一切似乎都没问题,我对此进行了大量研究,但在下拉列表中更改选项时没有任何反应。永远不会调用handleChange函数。有没有人有任何建议? 谢谢!

2 个答案:

答案 0 :(得分:2)

这是一个有效的JSFiddle

HTML

<div id="container">
    <!-- This element's contents will be replaced with your component. -->
</div>

的JavaScript

var DictionarySelector = React.createClass({
    getInitialState: function() {
        return  {value: ""}
    },
    handleChange: function(e) {
        this.setState({value: e.target.value});
        console.log('Dropdown changed');
        return;
    },
    render: function() {
        return (
            <div className="ui form" style={{marginTop:'55px'}}>
                <div className="field">
                    <select className="ui dropdown" onChange={this.handleChange} value={this.state.value}>
                        <option value="">Select Dictionary</option>
                        <option value="1">Dictionary 1</option>
                        <option value="2">Dictionary 2</option>
                     </select>
                 </div>
             </div>
         );
     }
 }); 
React.render(<DictionarySelector />, document.getElementById('container'));

答案 1 :(得分:1)

Soooo经过大量的实验和不同的尝试后我发现一切都设置得很完美,但我一直在用其他地方的JQuery命令初始化Semantic UI下拉列表,导致一些问题。