gpt4 book ai didi

reactjs - 为什么要避免 this.setState(this.state)?

转载 作者:行者123 更新时间:2023-12-04 18:44:23 25 4
gpt4 key购买 nike

在 React 中,我尝试了两种方法:

  • 更改状态然后 this.setState(this.state)
  • 克隆状态,更改状态克隆,然后 this.setState(stateClone)

它们都有效并且产生相同的结果。为什么建议(在文档中)设置为状态克隆(使用 Object.assign)而不是设置为状态本身?状态的对象标识在 React(没有 Redux)中重要吗?似乎只要调用 setState,无论状态对象身份如何,render() 都会被触发。

最佳答案

当我们说时,Javascript 对象和数组是通过引用而不是值传递的

stateClone = this.state

我们没有复制状态对象, 我们只是创建对同一对象(this.state)的新引用。现在,如果我们对 stateClone 进行任何更改,例如

stateClone.someProp = someValue

我们实际上直接改变原始状态,这是被禁止的,因为以这种方式进行的改变可能会在下一次 setState 调用中被覆盖。

这就是为什么使用Object.assign扩展运算符(...)来创建状态对象的副本并对该副本进行更改。

更多信息:https://medium.com/pro-react/a-brief-talk-about-immutability-and-react-s-helpers-70919ab8ae7c

关于reactjs - 为什么要避免 this.setState(this.state)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50673385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com