猿问

React / React Native:不能使用以前状态的键来设置状态吗?

努力查看这两个摘要之间的区别:


状态未设定


handleAddItemToCart = (item) => {

    this.setState((state) => {

      const { cartItems } = state;

      item.quantity = 1;

      cartItems.push(item);

      return { cartItems };

    });

  }

设置状态


<...>

return { cartItems: [...cartItems] }

对我来说,这实际上不是问题,但我真的很想了解这里发生的事情-我误会了什么?


智慧大石
浏览 135回答 1
1回答

慕雪6442864

因为通过推送到数组,您可以同时更改先前状态和当前状态。尽管React不在乎,但是会这样做shouldComponentUpdate,因为您无法确定当前状态是否与之前的状态有所不同,因为您都对这两种状态进行了突变。shouldComponentUpdate(nextProps, nextState) {&nbsp; // does return false, although you mutated the state&nbsp; return nextState.items !== this.state.items;}也就是说,防弹,完全不变的方式将是:this.setState({ cardItems }) => ({ cartItems: [...cardItems, { ...item, quantity: 1 }] }));
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答