我有一组数据,可以映射并显示在屏幕上。我希望能够在单击时对这些 dom 元素执行操作。我已经将 refs 存储在一个数组中,现在 onclick 我想对点击的那个做一些事情,其余的做一些事情。所以我想到使用 es6 过滤器从新数组中删除当前的一个,然后迭代它们。然后我可以自由地对点击的项目做任何我想做的事情。但是我无法让过滤器工作。没有安慰任何东西。https://codepen.io/_adamjw3/pen/MWWmGEgclass App extends React.Component { constructor(props) { super(); this.myRefs = []; this.state = { testData: [ "dave", "pete", "mark" ] } } myActionHandler = key => { const selectedDomElement = this.myRefs[key]; const filtered = this.myRefs.filter(item => item !== item); filtered.forEach(function(entry) { console.log("all but selected ne", entry); }); }; render(){ return ( <div className="container"> {this.state.testData.map((item, key) => { return ( <div key={key} > <button onClick={() => this.myActionHandler(key)} ref={ref => (this.myRefs[key] = ref)} > {item} </button> </div> ); })} </div> ); }}ReactDOM.render(<App />, document.getElementById('app'));
1 回答
慕妹3242003
TA贡献1824条经验 获得超6个赞
看起来你唯一的问题是你的过滤功能是错误的。它应该使用selectedDomElement
.
const filtered = this.myRefs.filter(item => item !== selectedDomElement);
添加回答
举报
0/150
提交
取消