码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • react-新旧生命周期


    文章目录

    • 旧版生命周期
    • 新版生命周期

    旧版生命周期

    旧版生命周期

    所适应的版本: React < 16.0.0

    1. contsructor
      1. 同一个组件对象只会创建一次
      2. 不能在第一次挂载到页面之前, 调用setState, 为了避免问题, constructor中严禁使用setState
    2. componentWillMount
      1. 正常情况下,也只会运行一次
      2. 可以使用setState,但是为了避免bug,不推荐使用,因为在某些特殊情况下,该函数会被调用多次
    3. render
      1. 返回一个虚拟dom,会被挂载到虚拟dom树中, 最终渲染到真实dom中
      2. render可能不止运行一次,只需要重新渲染,就会重新运行
      3. 严禁使用setState,会造成无限递归渲染
    4. componentDidMount
      1. 只会执行一次
      2. 可以使用setState
      3. 通常情况下,会将网络请求,启动计时器等一开始需要的操作,书写到该函数中
    5. 组件进入等待状态(活跃状态)
    6. componentWillReceiveProps
      1. 即将接受新的属性值, 参数为新的属性对象,this.props尚未发生变化
      2. 该函数可能会导致一些bug,所以不推荐用
    7. shouldComponentUpdate
      1. 指示react是否渲染组件,需要返回布尔值,true为渲染,false为不渲染
      2. 默认返回true
    8. componentWillUpdate
      1. 组件即将被重新渲染,不咋用
    9. componentDidUpdate
      1. 往往在该函数中操作dom,改变元素
    10. componentWillUnmount
      1. 通常在该函数中销毁一些组件依赖的资源,比如计时器

    新版生命周期

    所适应的版本: React >= 16.0.0
    新版生命周期

    1. getDerivedStateFromProps
      1. 通过参数可以获取新的属性和状态
      2. 该函数是静态的
      3. 该函数的返回值会覆盖掉组件状态
      4. 没啥用
    2. getSnapshotBeforeUpdate
      1. 触发时机: 真实dom构建完成,但并未渲染到页面时触发
      2. 在该函数中,常做一些dom操作
      3. 该函数需要与componentDidUpdate一起用(目测不用报警告)
      4. 该函数的返回值(不写返回值报警告),会作为componentDidUpdate的第三个参数
  • 相关阅读:
    自动化测试框架Playwright安装以及使用
    RT-Thread操作系统学习笔记(STM32F103C8T6)标准库(参考野火和江科大例程)----逻辑代码加入操作系统以LED灯闪烁为例
    在AgilePLM项目中使用积木报表
    WebGPU入门
    acwing 836. 合并集合-java
    Vue2里监听localstorage里值的变化
    2023学习计划
    2023.9.23(对这一年过去几个月的总结)
    合并两个有序链表(每日一题)
    神秘的Java集合与UML
  • 原文地址:https://blog.csdn.net/yuey0809/article/details/126032926
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号