У меня есть массив данных, которые я отображаю и отображаю на экране. Я хочу иметь возможность делать вещи с этими элементами DOM при нажатии. Я сохранил ссылки в массиве, и теперь я хочу сделать что-то с тем, на который нажали, и что-то еще с остальными.
Итак, я подумал об использовании фильтра es6 для удаления текущего из нового массива, а затем итерации по ним. И тогда я могу делать все, что захочу, с элементом, по которому щелкнули.
Однако я не могу заставить фильтр работать. ничего не утешает.
https://codepen.io/_adamjw3/pen/MWWmGEg
class 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'));