Как отфильтровать массив ссылок - PullRequest
0 голосов
/ 25 октября 2019

У меня есть массив данных, которые я отображаю и отображаю на экране. Я хочу иметь возможность делать вещи с этими элементами 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'));

1 Ответ

2 голосов
/ 25 октября 2019

Похоже, ваша единственная проблема в том, что ваша функция фильтра неверна. Следует использовать selectedDomElement.

const filtered =  this.myRefs.filter(item => item !== selectedDomElement);
...