【发布时间】:2017-08-20 05:50:34
【问题描述】:
我有一个非常简单的 React 片段,它忽略了一个数组并输出选项卡名称。但是我的点击处理程序不再工作(它在我没有循环之前工作)。
这块和我之前的 .map 循环之间的区别在于,这个新块在渲染函数中有两个返回。一个用于 React 所需的外部 div 元素,然后一个用于循环对象。
请问有谁可以成功让点击处理程序再次工作?
请查看我的组件
class TabMenu extends React.Component {
constructor(props) {
super(props);
this.state = {
};
this.tabMenuList = [
{
title: 'My Account',
section: 'MyAccount'
},
{
title: 'Conference Details',
section: 'MyAccount'
},
{
title: 'My Abstract',
section: 'MyAbstract'
}
];
}
handleClick(e){
e.preventDefault();
console.log('this is the click handler', this);
ReactDOM.render(<Conference />,document.getElementById('content'));
}
render() {
return (
<div>
{this.tabMenuList.map(function(menuItem, index){
return(
<li data={menuItem.section}>
<a onClick={this.handleClick.bind(this)} href={'#'}>
<img src={'assets/img/mail_icon.jpg'} />
<span>{menuItem.title}</span>
</a>
</li>
)
})}
</div>
);
}
}
【问题讨论】:
-
您需要在
tabMenuList地图回调上使用粗箭头 -
this不是您认为的.map函数内部的内容,正如上面建议的那样,您需要一个箭头函数。如果你console.log(this),你会看到它引用了Window -
您可能还需要将
onClick=onClick=更改为一个onClick= -
感谢您的快速回复,尝试了一些箭头功能但还没有工作。请有人介意向我展示箭头功能的外观吗?我还删除了双 onClick。那并不总是存在:)。
-
{this.tabMenuList.map((menuItem, index) => {
标签: javascript reactjs react-jsx