• 了解react记录2-生命周期


    高阶函数

    如果一个函数符合下面2个规范中的任何一个,那该函数就是高阶函数。

    • 1.若A函数,接收的参数是一个函数,那么A就可以称之为高阶函数。
    • 2.若A函数,调用的返回值依然是一个函数,那么A就可以称之为高阶函数。I常见的高阶函数伺

    函数的柯里化:通过函数调用继续返回函数的方式,实现多次接收参数最后统一处理的函数编码形式。

    生命周期

    挂载(mount):当clock 组件第一次被渲染到DOM中的时候,就为其设置一个计时器。
    卸载(unmount):当DOM中clock组件被删除的时候,应该清除计时器。

    • 生命周期钩子调用顺序和个人调用顺序没关系,由框架决定。
      函数名称:生命周期回调函数、生命周期钩子函数、生命周期函数、生命周期钩子

    • 1、构造器函数 【constructor(){}

    • 2、挂载前 【componentWillMount(){}

    • 3、初始化 【render(){}】 // 初始化渲染、状态更新后

    • 4、挂载后 【componentDidMount(){}】 //组件挂载完毕执行

    • 5、卸载组件前 【componentwillUnmount(){}】 // 组件将要卸载时执行

    卸载组件:【ReactDOM.unmountComponentAtNode(document.getElementById('test')) 】

    其他钩子函数:
    旧生命周期图

    • 1、setState() 修改状态更新 --> 【shouldComponentUpdate(){}】相当于阀门,决定是否更新,返回true往下走,false则终止。默认返回true -->
    • 2、forceUpdate() 强制更新 --> 【componentWillUpdate(){}】更新前执行的函数 -->
    • -->【componentDidUpdate(){}】更新后执行的函数。

    组件父子关系: 在A组件中引用B组件,A即是B组件的父组件。
    props的传递: 在引用的B标签中直接定义标签属性传递过去。

    • 3、【compenentWillReceiveProps(props){}】子组件将要接收传递过来的props前执行,第一次接收props时不会调用。

    新生命周期图

    新版生命周期把旧版中带【will】的钩子函数进行了改进。

    • static getDerivedStateFromProps(props,state){}】 需返回[从props派生的state]或[null]。若state的值在任何时候都取决于props,那么可以使用getDerivedStateFromProps
    • static getSnapshotBeforeUpdate(prevProps,prevState){}】 需返回[快照值]或[null]。返回值作为参数传递给【componentDidUpdate()】。

    虚拟DOM中key作用:

    状态中的数据发生变化时,react会根据【新数据】生成【新的虚拟DOM】,随后React进行【新虚拟DOM】与【旧虚拟DOM】的diff比较,比较规则如下:

    • 1、旧虚拟DOM中找到与新虚拟DOM相同的key:
      内容没变,直接使用之前的真实DOM
      若虚拟DOM中内容变了,则生成新的真实DOM,随后替换掉页面中之前的真实DOM

    • 2、旧虚拟DOM中未找到与新虚拟DOM相同的key:
      根据数据创建新的真实DOM,随后渲染到到页面

    • 用index作为key可能会引发的问题:
      ① 若对数据进行逆序添加、逆序删除等破坏顺序操作:会产生没有必要的真实DOM更新-->界面效果没问题,但效率低。
      ② 如果结构中还包含输入类的DOM:会产生错误DOM更新-->界面有问题。

    注意!如果不存在对数据的逆序添加、逆序删除等破坏顺序操作,仅用于渲染列表用于展示,使用index作为key是没有问题的。开发中最好用唯一标识作为key

  • 相关阅读:
    elementplus 按需引入将英文组件修改为中文
    vue3动态组件的展示
    vue3中的四种插槽的介绍保证让你看看的明明白白!
    发福利了!!!团队机器人每日分享最新漏洞验证脚本数据库文件分享!
    selenium 获取token
    7个开源交易撮合引擎
    【Anyhow】错误向下转型
    【Axum】全局 404 处理
    【Axum】获取查询参数
    【Axum】修改返回状态码
  • 原文地址:https://www.cnblogs.com/xiaoaiying/p/14195122.html
Copyright © 2020-2023  润新知