• React笔记08——React 中的生命周期函数


    在React中,生命周期函数指的是组件在某一时刻会自动执行的函数。生命周期函数也叫钩子函数。

    constructor在组件创建的时候自动执行,也是一个生命周期函数(普通的类周期函数),但不是React独有的生命周期函数。

    render函数是React的一个生命周期函数,当数据发生变化时,render函数会自动执行。

    生命周期函数是针对组件的,每个组件都有生命周期函数。

    1 组件初始化阶段(Initialization)

    没有react生命周期函数。

    这个阶段用来设置props和state数据。

    有constructor这个生命周期函数。

    2 页面挂载阶段(Mounting)

    把数据对应的页面展示到html上面。

    componentWillMount:组件即将挂载到页面上,挂载前自动执行

                  ⬇️

                render:页面渲染时,自动执行

          ⬇️

    componentDidMount:组件已经挂载完毕,挂载后自动执行

    3 数据更新阶段(Updation)

    数据发生变化后,Updation阶段开始执行。

    states数据发生变化:

    shouldComponentUpdate:更新前自动执行,需要返回一个布尔值,默认为true。有时数据发生变化,但页面不变,此时没必要多次重复使用render函数渲染页面,

                  将shouldComponentUpdate的返回值设置为false,其后的三个生命周期函数就不会执行,就可以解决这个问题,提升页面性能。

        ⬇️

    componentWillUpdate:组件即将更新到页面上

                ⬇️

              render

          ⬇️

    componentDidUpdate:组件已经更新完毕

    props数据发生变化:

    componentWillReceiveProps:只有一个组件是子组件的时候,该生命周期函数才会存在,当子组件接收的props发生更新时,自动执行

        ⬇️

    shouldComponentUpdate:更新前自动执行,需要返回一个布尔值,默认为true。有时数据发生变化,但页面不变,此时没必要多次重复使用render函数渲染页面,

                  将shouldComponentUpdate的返回值设置为false,其后的三个生命周期函数就不会执行,就可以解决这个问题,提升页面性能。

        ⬇️

    componentWillUpdate:组件更新前,shouldComponentUpdate执行后,自动执行

                ⬇️

              render:组件更新前,componentWillUpdate执行后,自动执行

          ⬇️

    componentDidUpdate:组件已经更新完毕

    4 组件被移除前阶段(Unmounting)

    当组件即将被销毁时componentWillUnmount会被自动执行。

    -------------------------------------------------------------------------------------------------------------------------

    生命周期函数使用实例

    实现点击页面上的文字,控制台打印一个windowclick。

    1⃣️将点击函数绑定在文字所在div上,这时页面第一次加载后,点击除文字的其他部分,不会打印,点击文字后,再点击其他部分就会打印windowclick了

    2⃣️将点击函数的绑定放在componentDidUpdate生命周期函数中,这样页面加载后,点击页面任意地方都会打印windowclick

    3⃣️也可以将点击函数的绑定放在componentWillUpdate生命周期函数中,但这样做会又一个问题,一旦该组件创建之后,如果页面上还有其他组件、或者该组件被移除后,新的组件显示到页面上,但是该组件添加的全局绑定没有被销毁,别的组件在挂载到页面上之后,该组件绑定的全局事件会影响到其他组件!所以需要在该组件被从页面上移除时,要在componentWillUnmount函数中对window绑定事件做解绑。

    4⃣️组件从远程服务器获取数据,React中没有现成的ajax工具,需要使用第三方工具,常用的如axios等。

    首先要安装axios工具,执行命令:npm install axios --save

    然后,引入axios包。

    一般,在componentDidMount生命周期函数中发送ajax请求

  • 相关阅读:
    微服务怎么限流?算法+框架+实战!
    Maven 架构选型,单模块还是多模块?
    Java 几行代码提取图片文字,过个厉害了。。
    面试官:SOA 和微服务的区别?这回终于搞清楚了!
    别再纠结线程池大小了,没有固定公式的!终于有人说清楚了。。
    MySQL 8.0 可以操作 JSON 了,牛逼。。。
    C#中判断一个类是否实现了某interface
    所有各数据库或文件的连接串定义CHM文件.
    这两天终于把火箭动力稍微搞清楚了点
    事件查看器中总是出现 sqlserveragent的错误
  • 原文地址:https://www.cnblogs.com/superjishere/p/12105906.html
Copyright © 2020-2023  润新知