Как упомянуто в комментарии @Carcigenicate, использование оператора распространения создает поверхностную копию массива. Это создает проблему для вас, потому что расширенная версия массива содержит Object
s, которые передаются по ссылке. Поэтому, хотя ваша локальная переменная products
является новой копией this.state.products
, они обе содержат ссылки на одни и те же Object
s.
Чтобы достичь того, что вы пытаетесь сделать, вам нужно клонировать объекты в this.state.products
. Один из возможных способов сделать это - использовать Object.assign
и заменить const products = [...this.state.products]
на:
const products = [
Object.assign({}, this.state.products.Orange),
Object.assign({}, this.state.products.Apples),
Object.assign({}, this.state.products.Bananas)
]