为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

智慧大石 2021-04-05 16:17:50
努力查看这两个摘要之间的区别:状态未设定handleAddItemToCart = (item) => {    this.setState((state) => {      const { cartItems } = state;      item.quantity = 1;      cartItems.push(item);      return { cartItems };    });  }设置状态<...>return { cartItems: [...cartItems] }对我来说,这实际上不是问题,但我真的很想了解这里发生的事情-我误会了什么?
查看完整描述

1 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

因为通过推送到数组,您可以同时更改先前状态和当前状态。尽管React不在乎,但是会这样做shouldComponentUpdate,因为您无法确定当前状态是否与之前的状态有所不同,因为您都对这两种状态进行了突变。


shouldComponentUpdate(nextProps, nextState) {

  // does return false, although you mutated the state

  return nextState.items !== this.state.items;

}

也就是说,防弹,完全不变的方式将是:


this.setState({ cardItems }) => ({ cartItems: [...cardItems, { ...item, quantity: 1 }] }));



查看完整回答
反对 回复 2021-04-15
  • 1 回答
  • 0 关注
  • 134 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信