zoukankan      html  css  js  c++  java
  • React组件的生命周期

    # 组件的生命周期

    ## 旧版组件的生命周期 < 16.0.0

    1. constructor

     1.同一个组件只会创建一次。

     2.不能在第一次挂载到页面之前,调用setState,为了避免bug,构造函数中严禁使用setState

    2.componentWillMountcomponentWillMount() 

     1.正常情况下,和构造函数一样自会运行一次。

     2.可以使用setState,但是为了避免bug,不允许使用,因为在某些特殊情况下,该函数可能被调用多次。

    3. **render**

     1.返回一个虚拟dom。会被挂载到react的虚拟dom树上,最终渲染到页面上。

     2.render会被运行多次,只要需要渲染,就会运行

     3.严禁使用直接使用setState,可能会导致虚拟无限递归

    4.**componentDidMount** componentDidMount()

     1.只会执行一次

     2.可以使用setState

     3.通常情况下,会将网络请求,启动计时器等一开始需要的操作,书写到该函数

    5.组将进入到活跃状态

    6.componentWillReceiveProps  componentWillReceiveProps (nextProps)

     1.即将接收新的属性值

     2.参数为新的属性对象

     3.该函数可能会导致一些bug,所以不推荐使用

    7.**shouldComponentUpdate**  shouldComponentUpdate(nextProps,nextState) 

     1.指示React是否要重新渲染该组件,返回true和false来指定

     2.默认情况下会返回true

    8.componentWillUpdate  componentWillUpdate (nextProps,nextState)

     1.组件即将被渲染

    9.componentDidUpdate  componentDidUpdate(prevProps,prevState)

     1.往往该组件中使用dom操作,改变元素。

    10.**componentWillUnmount**  componentWillUnmount() 

     1.通常在该函数中销毁一些组件依赖的一些资源,比如计时器。

    ## 新版版组件的生命周期 >=16.0.0

    React官方认为,某个数据的来源必须单一所以删除了有可能导致bug的componentWillMount,componentWillReceiveProps,componentWillUpdate

    新增加了:

    1.getDerivedStateFromProps

     1.通过参数获取新的属性和状态

     2.该函数时静态函数

     3.该函数的返回值会覆盖掉组件的状态

     4.该函数几乎不会使用到

    2.getSnapshowBeforeUpdate

     1.真实的dom已经构建完成,但未实际渲染到页面中去

     2.在该函数中,通常用于实现一些附加的dom操做

     3.该函数的返回值会作为componentDidUpdate的第三个参数

  • 相关阅读:
    一年后重翻javascript
    针对thinkphp 5框架存储过程bug而重写的存储过程的扩展类
    移动应用端的支付宝支付php开发流程
    android studio 开发中启动android项目报错sdk版本不一致解决方案
    正则表达式(一)
    linux下memcached安装以及启动
    linux如何添加服务为系统服务快速启动或关闭
    js或者jquery直接下载网页上的图片代码
    onethink多图上传
    php+redis实现多台服务器内网存储session并读取
  • 原文地址:https://www.cnblogs.com/qydknowledge/p/14147954.html
Copyright © 2011-2022 走看看