React生命周期(上)

简介: ReactJS 的核心思想是组件化,即按功能封装成一个一个的组件,各个组件维护自己的状态和 UI,当状态发生变化时,会自定重新渲染整个组件,多个组件一起协作共同构成了 ReactJS 应用。

ReactJS 的核心思想是组件化,即按功能封装成一个一个的组件,各个组件维护自己的状态和 UI,当状态发生变化时,会自定重新渲染整个组件,多个组件一起协作共同构成了 ReactJS 应用。

为了能够更好的创建和使用组件,我们首先要了解组件的生命周期。

生命周期节点

  • Mounting :挂载阶段
  • Updating :运行时阶段
  • Unmounting :卸载阶段
  • Error Handling :错误处理

1 组件的生命周期

创建阶段、实例化阶段、更新阶段、销毁阶段。

下面对各个阶段分别进行介绍。

1.1加载阶段 mounting

image.png

该阶段主要发生在创建组件类的时候,即调用 React.createClass 时触发

这个阶段只会触发一个 getDefaultProps 方法,该方法会返回一个对象并缓存。然后与父组件指定的 props 对象合并,最后赋值给 this.props 作为该组件的默认属性。


1.2 实例化阶段

该阶段主要发生在实例化组件类的时候,也就是该组件类被调用的时候触发。

这个阶段会触发一系列的流程,按执行顺序如下

(1)getInitialState:初始化组件的 state 的值。其返回值会赋值给组件的 this.state 属性。

(2)componentWillMount:根据业务逻辑来对 state 进行相应的操作。

(3)render:根据 state 的值,生成页面需要的虚拟 DOM 结构,并返回该结构。

(4)componentDidMount:对根据虚拟 DOM 结构而生的真实 DOM 进行相应的处理。组件内部可以通过 ReactDOM.findDOMNode(this) 来获取当前组件的节点,然后就可以像 Web 开发中那样操作里面的 DOM 元素了。

1.3 更新阶段

image.png

这主要发生在用户操作之后或者父组件有更新的时候,此时会根据用户的操作行为进行相应得页面结构的调整。这个阶段也会触发一系列的流程,按执行顺序如下:

(1)componentWillReceiveProps:当组件接收到新的 props 时,会触发该函数。在改函数中,通常可以调用 this.setState 方法来完成对 state 的修改。

(2)shouldComponentUpdate:该方法用来拦截新的 props 或 state,然后根据事先设定好的判断逻辑,做出最后要不要更新组件的决定。

(3)componentWillUpdate:当上面的方法拦截返回 true 的时候,就可以在该方法中做一些更新之前的操作。

(4)render:根据一系列的 diff 算法,生成需要更新的虚拟 DOM 数据。(注意:在 render 中最好只做数据和模板的组合,不应进行 state 等逻辑的修改,这样组件结构更加清晰)

(5)componentDidUpdate:该方法在组件的更新已经同步到 DOM 中去后触发,我们常在该方法中做一 DOM 操作。

1.png

目录
打赏
0
0
0
0
1892
分享
相关文章
React 组件生命周期
React 组件生命周期
50 0
react 组件的生命周期
React组件的生命周期包括从创建到销毁的各个阶段,如挂载(mounting)、更新(updating)和卸载(unmounting)。每个阶段都有特定的方法,用于控制组件的行为和状态,确保高效、有序地渲染和管理UI。
介绍一下React生命周期
介绍一下React生命周期
144 9
React的生命周期演示-新(12)
【8月更文挑战第15天】React的生命周期演示-新
78 5
React的生命周期演示-新(12)
React的生命周期简介(十)
【8月更文挑战第15天】React的生命周期简介
80 2
深入理解React组件的生命周期与Hooks
【10月更文挑战第7天】深入理解React组件的生命周期与Hooks
253 0
React 组件的生命周期阶段详解
【8月更文挑战第30天】
82 7
React组件生命周期详解
【9月更文挑战第4天】在React应用开发中,掌握组件生命周期对于管理状态和属性至关重要,并能有效提升应用性能。本文详细介绍了React组件生命周期的三个阶段:挂载、更新和卸载,并通过代码示例展示了如何避免状态更新导致的死循环及优化网络请求等问题,帮助开发者构建更高效、可维护的应用。
141 2
React 组件生命周期方法详解
【8月更文挑战第30天】
123 5
React的生命周期演示-旧(11)
【8月更文挑战第15天】React的生命周期演示-旧(11)
59 3
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等