Javascript 如何将onclick事件添加到元素数组中 for(让menuname这个.tabsdata[reqmenuitem]){ push({menuname.name}); }

Javascript 如何将onclick事件添加到元素数组中 for(让menuname这个.tabsdata[reqmenuitem]){ push({menuname.name}); },javascript,arrays,reactjs,Javascript,Arrays,Reactjs,在这里,\u fetchTabData在页面呈现后立即触发,请指导我如何将onclick侦听器正确附加到相应的数组元素中,如果您正在调用函数\u fetchTabData(并将结果传递到onClick我假设您的函数返回undefined,因此传递到onClick您将传递undefined),但对于onClick您应该传递对函数的引用,您可以使用或绑定 for (let menuname of this.tabsdata[reqmenuitem]) { content.push(<An

在这里,
\u fetchTabData
在页面呈现后立即触发,请指导我如何将
onclick
侦听器正确附加到相应的数组元素中,如果您正在调用函数
\u fetchTabData
(并将结果传递到
onClick
我假设您的函数返回
undefined
,因此传递到
onClick
您将传递
undefined
),但对于
onClick
您应该传递对函数的引用,您可以使用
绑定

for (let menuname of this.tabsdata[reqmenuitem]) {
   content.push(<Anchor className="toblack" onclick={this._fetchTabData(this)}>{menuname.name}</Anchor>);
}                                                                              
for(让menuname这个.tabsdata[reqmenuitem]){
内容推送(
{this._fetchTabData(menuname)}
>
{menuname.name}
);
}

首先,将
\u fetchTabData
实现更改为如下内容:

for (let menuname of this.tabsdata[reqmenuitem]) {
  content.push(
    <Anchor 
      className="toblack" 
      onClick={() => { this._fetchTabData(menuname) } }
    >
     {menuname.name}
    </Anchor>
  );
}
那么,就这样称呼它吧

_fetchTabData(menuname) {
  return (event) => {
    // Do what you need
    console.log(menuname);
  };
},
for(让menuname这个.tabsdata[reqmenuitem]){
push({menuname.name});
} 
  • .getElementById('container').children
    ----使用父级的.children属性将元素获取到数组中
  • 使用
    for()
    循环附加
    .addEventListener(类型、函数)
  • 使用所需操作定义函数(单击.changecolor)
//纯JS

for (let menuname of this.tabsdata[reqmenuitem]) {
  content.push(<Anchor className="toblack" onclick={this._fetchTabData(menuname)}>{menuname.name}</Anchor>);
} 

单击={
更改颜色:(e)=>{
e、 target.style.color=“红色”;
}   
};
初始化=()=>{
var childs=document.getElementById('container').childs;
对于(变量i=0;i
这是因为您正在调用
this.\u获取tabdata
并将返回值传递给
onclick
()
始终调用该函数。可能值得快速解释一下thunk和closure,因为这一点不太清楚,而且在ToolKit中有一个很好的模式,为什么会得到否决票?这正好向您展示了
“如何将onclick事件添加到元素数组中”
正如标题所述……在新的ES6速记“胖箭头语法”中……对于投票否决这一点的rook来说可能有点高级。
<!DOCTYPE html>
<html>
<head>
<script>
click = {
    changecolor: (e)=>{
        e.target.style.color = "red";

    }   
};
init = ()=>{
    var childs = document.getElementById('container').children;
    for(var i=0; i < childs.length; i++){
        childs[i].addEventListener('click', click.changecolor);
    }
}
document.addEventListener('DOMContentLoaded', init);
</script>
</head>
<body>
    <div id="container">
        <span>1</span>
        <span>2</span>
        <span>3</span>
        <span>4</span>
    </div>
</body>
</html>