React element'的方法在绑定到map()函数中时表现出奇怪的行为
React element's method shows weird behaviour when bound inside map() function
我在学习ReactJS的早期,遇到了一个非常令人困惑(和恼人!)的问题,当使用Array.prototype.map()方法渲染多个元素时。我在网上搜索了这个解决方案,也看了几本没有成功的书。下面是我要实现的代码:
var ExampleComponent = React.createClass({
handleClick: function(event) {
event.preventDefault();
console.log("Click is working");
},
getInitialState: function() {
return {
exampleArray: ["one", "two", "three"]
};
},
render: function() {
return (
<div>
{this.state.exampleArray.map(function(item, index) {
return (
<button className={item} key={index} onClick={this.handleClick}>{item}</button>
);
})}
</div>
);
}
});
按钮渲染得很好。我希望在单击它们中的任何一个时,指定的字符串将登录到控制台中。相反,点击按钮会导致页面重新加载……感觉我在这里遗漏了一些关于React如何工作的明显的东西。
以前有人遇到过这个问题吗?罪魁祸首是什么?是否有更好的方法来实现相同的模式?
对这个问题的任何意见都将非常感谢!
您需要使用父上下文调用map()
:
// Call map with context.
{this.state.exampleArray.map(function(item, index) {
return (
<button className={item} key={index} onClick={this.handleClick}>
{item}
</button>
);
}, this)}
// Call map with implicit context via arrow function.
{this.state.exampleArray.map((item, index) => {
return (
<button className={item} key={index} onClick={this.handleClick}>
{item}
</button>
);
})}
参见组件间通信
相关文章:
- 使用element简化onclick函数
- AngularJS,angular.element($0).scope()揭示了每个控制器的函数
- 如何在element.someEvent函数中使用更多参数
- 在JavaScript中编译搜索后,获取链接到函数的属性标记的Element
- element.sortable 不是一个函数 Angular
- AngularJS错误”;element.childs(..).slideToggle不是函数“;
- JavaScript 函数 通过调用 Element 访问此内容
- element.setAttribute 不是一个函数
- 如何手动触发 jQuery drag() 函数?像 $(element).trigger('drag')
- Angularjs twitter bootstrap.错误:element.focus() 不是一个函数
- element.innerHTML 无法调用我的 javascript 函数
- 如何在 JavaScript 中使用 DOM 操作函数将
- Kendo NumericTextBox 中存在一个错误,它存在于函数 caret(element, position)
- 如何从指令的链接函数的“element”参数中选择具有特定ID的元素,使用jQuery而不是angular的jqLite
- 电子邮件验证函数在 JavaScript 表单验证中与 element[x] 不起作用
- TypeError:$element.epoch不是函数
- 完美的滚动条:element.getAttribute不是一个函数
- 如何在element.innerHTML发生更改时立即运行函数
- 测试在对element.blur()运行函数之前是否单击了按钮
- element.dispatchEvent不是函数