React:输入类型=“复选框”onChange未触发

时间:2015-04-07 09:09:48

标签: javascript reactjs

有人能告诉我为什么单击任何复选框时都没有触发 handleChange ?复选框按预期值呈现,但不会触发点击处理程序。

 37   var AutocompleteFromCheckboxes = React.createClass({
 38     handleChange: function(e) {
 39       console.log('hi');
 40       return 1;
 41     },
 42     render: function() {
 43       var autocompleteFrom = this.props.autocomplete_from.map(function(value) {
 44         return (
 45           <label for={value}>
 46             <input type="checkbox" name={value} value="{value}"
 47               onChange={this.handleChange}
 48               ref="autocomplete-from"/>
 49             {value}
 50           </label>
 51         );
 52       });
 53       return (
 54         <div className="autocomplete-from">
 55           {autocompleteFrom}
 56         </div>
 57       );
 58     }
 59   });

1 个答案:

答案 0 :(得分:1)

在你的代码中,匿名函数使用错误的上下文运行:只要你没有明确地设置它,它就被设置为undefined

这意味着thisundefined因此this.handleChange应该抛出异常(不知道为什么你没有检查控制台。如果你有 - 为什么你没有'提到它)。

要解决此问题,您可以明确地将上下文作为Array.prototype.map函数调用的第二个参数传递:

var autocompleteFrom = this.props.autocomplete_from.map(function(value) {
    // ...
}, this);

一旦您解决了这个特定问题并准备深入了解this在JS中的工作方式,请按照amazing answer进行操作。