【学习笔记】Vue3源码解析:第五部分 - 实现渲染(2)

课程地址:【已完结】全网最详细Vue3源码解析!(一行行带你手写Vue3源码)

第五部分-:(对应课程的第33 - 35节)

第33节:《讲解组件渲染流程》

在这里插入图片描述

1、在 render 函数中拿到虚拟dom vnode后,编写patch函数,它接收3个参数:null、vnode、container,分别代表:上一次的虚拟dom即旧的虚拟dom,这一次的虚拟dom即新的虚拟dom,以及要挂载的元素:

在这里插入图片描述

2、编写patch方法:

在这里插入图片描述

3、添加 processComponent 与 mountComponent 方法:

在这里插入图片描述

4、这里我们写的 render 函数,相当于一个effect,因为当内部的数据变化时,需要进行界面的更新:

在这里插入图片描述

第34节:《创建组件实例》

1、在 vnode 中增加一个component 属性:
在这里插入图片描述

2、在 mountComponent 中加入创建组件的实例对象、解析数据到这个实例对象中以及创建effect的方法,这3个方法都是在 component.ts文件中定义的:

在这里插入图片描述

3、新建 component.ts 文件,在其中定义这3个方法:

在这里插入图片描述

4、编写创建组件实例对象 createComponentInstance 中的代码:

在这里插入图片描述

第35节:《解析数据到组件实例上》

1、编写 setupComponent 方法中的逻辑:

在这里插入图片描述

查看源码中打印的 setup 的两个入参:

在这里插入图片描述

其中 context 打印如下,这个context对象有 attrs、emit、slots 和 expose 四个属性:

在这里插入图片描述

2、回到自己的工程,在组件中写一个setup:

在这里插入图片描述

给组件的实例对象添加一个type属性:

在这里插入图片描述

定义 setupStateComponent 方法,在其中拿到组件上的setup方法并执行:

在这里插入图片描述

测试setup执行,控制台可以成功打印:

在这里插入图片描述

3、继续添加如下代码:给setup传递第一个参数:组件实例的props:即

createApp(App,{name:'sy',salary:25}).mount('#app') 

这行代码中传递给 createApp 的第二个参数:{name:‘sy’,salary:25} 。
通过 createContext 函数生成 setup 的第二个参数 context 对象。

在这里插入图片描述

打印观察setup的这两个参数:

在这里插入图片描述
在这里插入图片描述

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-22 23:50:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-22 23:50:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-22 23:50:01       82 阅读
  4. Python语言-面向对象

    2024-04-22 23:50:01       91 阅读

热门阅读

  1. nodejs 编写脚手架

    2024-04-22 23:50:01       116 阅读
  2. 微信原生小程序封装用户登陆

    2024-04-22 23:50:01       153 阅读
  3. git之常见的license及其适用场景

    2024-04-22 23:50:01       132 阅读
  4. GRU之我见(含案例讲解)

    2024-04-22 23:50:01       37 阅读
  5. pytest前后值和@pytest.fixtrue的使用

    2024-04-22 23:50:01       34 阅读
  6. Hadoop HDFS:海量数据的存储解决方案

    2024-04-22 23:50:01       39 阅读
  7. CSS字体样式

    2024-04-22 23:50:01       31 阅读
  8. aws挂载s3

    2024-04-22 23:50:01       36 阅读