Я приложение, где я могу добавить товар в корзину. На данный момент, если пользователь удаляет элемент из корзины, я использую .filter, чтобы удалить объект basketItem из массива basketItems. Затем я устанавливаюState в этот массив с фильтрованным элементом.Добавить элемент в корзину Filter vs Splice ReactJS Javascript
removeItem(msg, data) {
let newStateItems = this.state.items.filter((i) => i.id != data.id);
this.setState({
items: newStateItems
});
this.calculateTotals();
}
Проблема однако в том, что, как только я удалил элемент и затем добавить еще один пункт, новый товар, который создается показывает, как старый пункт, пока страница не обновляется - пример это приложение можно найти here и full repository находится на github.
Надстройка элемент вызова выглядит следующим образом:
addItem(msg, data) {
this.state.items.push(data);
this.setState({
items: this.props.items
})
this.calculateTotals();
}
Как я могу гарантировать, что правильный пункт показывает в корзине?
может быть, вам нужно добавить пункт что-то вроде этого https://jsfiddle.net/7og8ztLz/ –
Используйте 'concat' вместо' push' в среагировать. 'push' изменяет значения. Но React работает с неизменяемыми данными (он работает с изменяемыми данными, но я не рекомендую вам искать проблемы) – iofjuupasli