在shouldComponentUpdate之后和渲染之前,状态是否会更新

时间:2019-10-21 12:24:33

标签: javascript reactjs

我是React的新手,只是一个有关如何更新组件状态对象的问题。分析一些代码后,我认为:

在更新阶段,状态应该在shouldComponentUpdate方法之后但在render方法之前更新,我的理解正确吗?

如果答案是肯定的,是否还有另一种专用方法(例如“ UpdatingState”)来更新状态对象?

3 个答案:

答案 0 :(得分:1)

react中的更新状态通过setState生命周期方法完成

您可以像这样this.setState({name: 'new name'})来调用它,它将状态对象键name更新为新值,在这种情况下为new name

更新对象要困难一些。您必须先克隆对象。然后更改值,然后像这样重置状态

state = {
   person: {
     name: 'peter',
     age: 25
}

const copy = {...this.state.person}
copy.name = 'new name'
this.setState({copy})

答案 1 :(得分:0)

是的,状态应该在shouldComponentUpdate之后更新(setState)。更新阶段的顺序为

  1. getDerivedStateFromProps
  2. shouldComponentUpdate
  3. 渲染
  4. componentDidUpdate

使用setState

更新状态

答案 2 :(得分:0)

在状态和道具的每次更新后都有一个函数被调用:

componentDidUpdate(prevProps , prevState)