Удаление определенного элемента из массива - PullRequest
0 голосов
/ 08 января 2019
state = { filters: ['all'] }


this.state.filters.includes('humans') ? 
    this.state.filters.filter(val => val !== 'humans') : this.state.filters.push(dropdown)

Я использую условие, при котором, когда я нажимаю на кнопку, элемент («люди») переводится в состояние, и когда я снова нажимаю на ту же кнопку, мне нужно удалить элемент («люди») из массив. Push работает нормально, мне нужна помощь в его удалении. Я использовал фильтр как в приведенном выше коде, он не добавляется снова в массив, но также не удаляется. Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 08 января 2019

Использование:

let index = this.state.filters.indexOf('humans');
if (index !== -1)
   this.state.filters.splice(index, 1);

Или вам лучше придерживаться этого подхода к избегать изменения состояния в React:

let array = [...this.state.filters]; // make a separate copy of the array
let index = array.indexOf('humans')
if (index === -1) { // not in the array
   array.push('humans');
   this.setState({filters: array});
} else { // exists in the array
   array.splice(index, 1);
   this.setState({filters: array});
}
0 голосов
/ 08 января 2019

Вы не должны изменять состояние нажатием, потому что это может не вызвать повторный рендеринг. Вы должны использовать метод setState.

toggleFilter = filter => {
  const isIncluded = this.state.filters.includes(filter)

  const add = (filters, filter) =>
    filters.concat(filter)

  const remove = (filters, filter) =>
    filters.filter(f => f !== filter)

  this.setState(prevState => ({ 
    filters: isIncluded 
               ? remove(prevState.filters, filter)
               : add(prevState.filters, filter)
  }))
}
0 голосов
/ 08 января 2019

Чтобы удалить элемент из массива, вы можете сделать ниже вещь

filters.splice(index_of_the_val, 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...