美文网首页
React 知识点小结(二):生命周期

React 知识点小结(二):生命周期

作者: 二季猫Hsu | 来源:发表于2019-03-03 13:01 被阅读0次

React是单向数据流

组件初始化(initialization)阶段:

constructor // 构造器 设置组件的初始化状态

组件的挂载(Mounting)阶段

componentWillMount // 即将载入dom
组件即将被渲染到页面之前触发,此时可以进行开启定时器、向服务器发送请求等操作

render
组件渲染

componentDidMount // 已经载入dom 重要!!!!
组件已经被渲染到页面中后触发:此时页面中有了真正的DOM的元素,可以进行DOM相关的操作

组件的更新(update)阶段:

componentWillReceiveProps // 即将接受参数
组件接收到属性时触发

shouldComponentUpdate // 判断是否允许组件更新 true允许组件更新,false阻止组件更新
当组件接收到新属性,或者组件的状态发生改变时触发。组件首次渲染时并不会触发
一般我们通过该函数来优化性能

componentWillUpdate // 即将更新
组件即将被更新时触发

render
组件渲染

componentDidUpdate // 已经更新
组件被更新完成后触发。页面中产生了新的DOM的元素,可以进行DOM操作

销毁阶段:

componentWillUnmount // 即将被销毁
组件被销毁时触发。这里我们可以进行一些清理操作,例如清理定时器,取消Redux的订阅事件 和 清除componentDidMount中手动创建的DOM元素等等。


React v16.4 的生命周期

React V16中 推出了Fiber,如果开启 异步render,那么 React Fliber 将在两个阶段:
第一个阶段Reconciliation Phase和第二阶段Commit Phase.

在第一阶段Reconciliation Phase,React Fiber会找出需要更新哪些DOM,这个阶段是可以被打断的;但是到了第二阶段Commit Phase,那就一鼓作气把DOM更新完,绝不会被打断。

与此相关的,就牵扯到了 生命周期函数。所以在render前,可能会多次调用生命周期函数。具体如下:

第一阶段可能会调用下面这些生命周期函数,说是“可能会调用”是因为不同生命周期调用的函数不同。

componentWillMount
componentWillReceiveProps
shouldComponentUpdate
componentWillUpdate

下面这些生命周期函数则会在第二阶段调用。

componentDidMount
componentDidUpdate
componentWillUnmount


React Fiber与生命周期函数

新的生命周期

getDerivedStateFromPropsgetSnapshotBeforeUpdate

getDerivedStateFromProps

static getDerivedStateFromProps(props, state) 在组件创建时和更新时的render方法之前调用,它应该返回一个对象来更新状态,或者返回null来不更新任何内容。

getSnapshotBeforeUpdate

getSnapshotBeforeUpdate() 被调用于render之后,可以读取但无法使用DOM的时候。它使您的组件可以在可能更改之前从DOM捕获一些信息(例如滚动位置)。此生命周期返回的任何值都将作为参数传递给componentDidUpdate()。

相关文章

  • React 知识点小结(二):生命周期

    React是单向数据流 组件初始化(initialization)阶段: constructor // 构造器 ...

  • React组件生命周期

    问题 理解React组件的生命周期 知识点 React流程状态图 注意:流程状态图为使用React.createC...

  • React入门(四) React的生命周期和节点

    本节知识点 (1) 获取到元素的节点。(2) React的生命周期 (1) 在react中要想获取到元素节点有两种...

  • React概念图

    React概念图 React组件生命周期概念图 参考文档:React入门教程 组件生命周期React:组件生命周期...

  • React生命周期小结

    react生命周期流程 1.初始化,首次render getDefaultProps()getDefaultPro...

  • React基础篇之组件的生命周期

    引出生命周期 react生命周期(旧) react生命周期(新) getSnapshotBeforeUpdate的...

  • 生命周期

    React基础知识 一 、生命周期 二、组件间的传参 componentWillReceiveProps生命周期在...

  • 2018-10-13

    react的生命周期(二) 前面已经详细讲解过react的生命周期,具体可以参考我的另一篇文章:https://w...

  • React知识点小结

    react Dom与JSX关系 react页面渲染,由三部分构成:state 数据 + JSX模版 => 真实Do...

  • React生命周期

    React v16.0前的生命周期 React v16.4+ 的生命周期图 React v16.9后这些生命周期钩...

网友评论

      本文标题:React 知识点小结(二):生命周期

      本文链接:https://www.haomeiwen.com/subject/abepuqtx.html