“react”:“^ 16.4.1”,“react-dom”:“^ 16.4.2”,“react-redux”:“^ 5.0.7”,“redux”:“^ 4.0.0”,“redux” -thunk“:”^ 2.3.0“,”webpack-dev-server“:”^ 3.1.5“
const items = this.props.cart.cartItems;
const index = items.indexOf(item1);
items.splice(index, 1);
this.setState({ finalPrice: 0 });
在这种情况下,道具'cartItems'更新为变量'items'而不调度操作。
这是因为您正在改变从另一个对象属性复制的对象的对象属性,而不进行深层复制。因此,当您改变嵌套属性时,它也会更改原始对象。您可以进行深层复制或更改对象而不进行变更。
splice
改变原始阵列。要么使用slice
,要么使用filter
等其他方法。const cart = {
cartItems: [
"foo", "bar", "baz"
],
}
console.log( "original one before update", cart.cartItems );
const index = cart.cartItems.indexOf("foo");
const items = cart.cartItems.filter( (_, i) => i !== index );
console.log( "original one after update", cart.cartItems );
console.log( "new items", items );