【学习笔记】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的这两个参数:

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

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值