有人能告诉我为什么单击任何复选框时都没有触发 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 });
答案 0 :(得分:1)
在你的代码中,匿名函数使用错误的上下文运行:只要你没有明确地设置它,它就被设置为undefined
。
这意味着this
是undefined
因此this.handleChange
应该抛出异常(不知道为什么你没有检查控制台。如果你有 - 为什么你没有'提到它)。
要解决此问题,您可以明确地将上下文作为Array.prototype.map
函数调用的第二个参数传递:
var autocompleteFrom = this.props.autocomplete_from.map(function(value) {
// ...
}, this);
一旦您解决了这个特定问题并准备深入了解this
在JS中的工作方式,请按照amazing answer进行操作。