在没有调度React的情况下更新了道具
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在没有调度React的情况下更新了道具相关的知识,希望对你有一定的参考价值。
“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 );
以上是关于在没有调度React的情况下更新了道具的主要内容,如果未能解决你的问题,请参考以下文章