react-渲染过程--新节点挂载


渲染: 生成用于显示的对象, 以及将这些对象转化为真实的dom对象

名词解释(本文章,不是针对react)

  • React元素: 通过React.createElement创建(语法糖jsx)
  • React节点: 专门用于渲染到ui界面的对象
  • 节点类型:
    • DOM节点: 创建该节点的React元素类型是一个字符串(div, p, h1等)
    • 组件节点: 创建该节点的React元素类型是一个函数或者是一个类
    • 文本节点: 由字符串创建
    • 空节点: null, undefined, boolean
    • 数组节点: 该节点由一个数组创建
  • 真实DOM: 通过document.createElement创建
  • 递归: 返回渲染第1步(根1)进行新的渲染操作

首次渲染(新节点渲染)

  1. 通过参数的值创建节点(例: React.createElement(‘div’, {props}, child1, child2))
  2. 根据不同的节点,做不同的事情
    1. 文本节点: 通过document.createTextNode创建真实的文本节点
    2. 空节点: 什么也不做
    3. 数组节点: 遍历数组, 将数组每一项递归创建节点
    4. DOM节点: 通过document.createElement创建真实的DOM对象,然后立即设置该真实DOM的各种属性,然后遍历对应React元素的Children属性,进行递归
    5. 组件节点
      1. 函数组件: 调用函数(函数需返回一个可以生成节点的内容),将函数的返回结果递归生成节点
      2. 类组件
        1. 创建该类的实例
        2. 立即调用对象的生命周期方法: static getDerivedStateFromProps
        3. 运行该对象的render方法,得到节点对象,递归渲染
        4. 将该组件的componentDidMount方法加入到执行队列(先进先出),当整个虚拟DOM树构建完毕,并将真实DOM挂载到容器中后,执行该队列
  3. 生成的虚拟DOM将会被保存,以便后续使用
  4. 将之前生成的真实DOM对象挂载到容器中

例子

代码

APP.js

import React, {
    Component } from 'react'

function CompB() {
   
  return (
    <div>
      <h1>标题</h1>
      {
   
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

合法的咸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值