有人可以解释下一个背景下真正发生的事情:
假设我有一个应用程序组件(父级),并且一些子组件让我们说索引,搜索,关于这三个孩子有他们的孩子。
当我在App Component中调用componentWillUpdate时会发生什么...,新的状态/道具会出现但是叶子(孩子们)会发生什么,他们会自己重新渲染吗?
并且让我说我在App中的这个componentWillUpdate中覆盖了我的DOM,并且我在componentDidMount或componentWillMount中的叶子组件中的DOM中也是同样的东西......哪个值将是最后一个?
答案 0 :(得分:5)
首先,你不应该手动调用componentWillUpdate
。如果作为其生命周期的一部分,React会调用它。
根据comment in ReactCompositeComponent.js,这是更新阶段的问题:
Update Phases:
- componentWillReceiveProps (only called if parent updated)
- shouldComponentUpdate
- componentWillUpdate
- render
- [children's constructors or receive props phases]
- componentDidUpdate
正如您所见,在呈现儿童共犯之前调用了App.render
。
如果由于某种原因想要手动操作DOM,componentWillUpdate
不是正确的操作方法。每次更新后使用componentDidUpdate
或初始渲染后使用componentDidMount
。在父母的生命周期方法之前触发了孩子的componentDidUpdate
和componentDidMount
。