反应:输入类型="checkbox" onChange 未触发

React: input type="checkbox" onChange not triggered

谁能告诉我为什么当我点击任何复选框时 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   });

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

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

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

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

一旦您解决了这个特定问题并准备好深入了解 this 在 JS 中的工作原理,请遵循此 amazing answer