Попытка удалить свойство в массиве, который также находится в массиве в React - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь добавить функциональность в мое приложение для удаления значений в массиве списка следующего состояния

shoeList : [ 
  {name: 'Nike', 
   list : [
    {type: 'boots', revenue: '1000000', gender: 'mens', price: '49.99', id: 3},
    {type: 'shoes', revenue: '13280100', gender: 'womens', price: '99.99', id: 2}
    ]
  }
],

Я понимаю, что идентификаторы должны быть равны, чтобы происходило удаление. Сейчас я пытаюсь получить доступ к соответствующей строке, которую нужно удалить (тип, доход, пол и цена), но не уверен, как получить доступ к свойствам в массиве, который находится внутри массива.

Вот код пока у меня есть

deleteShoe = (id) => 
  {
    let shoeList = this.state.shoeList.filter(shoe =>{
      return (
        shoe.list.filter(shoeid =>{
          return shoeid.id !== id
        }
        )
      )
    });
this.setState({
  shoeList: shoeList
})
}

Очевидно, что этот код не знает и не может понять, почему. Единственная причина, по которой я могу думать, это то, что фильтр не может быть вложенным, но если это так, как бы я go о реализации этого. Любая помощь будет отличной

1 Ответ

1 голос
/ 27 марта 2020

Ты рядом. Вам просто не хватает переназначения shoe.list с обновленным списком обуви после фильтрации.

deleteShoe = (id) => {
    const { shoeList } = this.state;
    const newShoeList = shoeList.map(shoe => {
      shoe.list = shoe.list.filter(shoeid => shoeid.id !== id)
      return shoe;
    });
    this.setState({
      shoeList: newShoeList
    })
}

Это должно удалить соответствующий идентификатор обуви и переназначить ваш shoe.list с недавно отфильтрованным списком обуви.

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