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

这篇具有很好参考价值的文章主要介绍了【学习笔记】Vue3源码解析:第五部分 - 实现渲染(2)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

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

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

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

2、编写patch方法:

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

3、添加 processComponent 与 mountComponent 方法:

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

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

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

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

1、在 vnode 中增加一个component 属性:
【学习笔记】Vue3源码解析:第五部分 - 实现渲染(2),学习,笔记,vue.js

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

【学习笔记】Vue3源码解析:第五部分 - 实现渲染(2),学习,笔记,vue.js
【学习笔记】Vue3源码解析:第五部分 - 实现渲染(2),学习,笔记,vue.js文章来源地址https://www.toymoban.com/news/detail-855815.html

到了这里,关于【学习笔记】Vue3源码解析:第五部分 - 实现渲染(2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue学习笔记六--Vue3学习

    前提:node -v 查看node版本,需要在16.0及以上 创建命令 npm init vue@latest,先安装create-vue然后创建项目 然后执行npm run dev 提示 sh: vite: command not found,需要执行 npm i 重新安装依赖,之后再执行 npm run build ,再执行 npm run dev 可以正常运行了 更换npm淘宝源 首先打开命令提示符或者终端

    2024年01月20日
    浏览(46)
  • 【Unity学习笔记】New Input System 部分源码和测试用例补充

    转载请注明出处:🔗https://blog.csdn.net/weixin_44013533/article/details/135630016 作者:CSDN@|Ringleader| 主要参考: Unity官方Input System手册与API 【Unity学习笔记】Unity TestRunner使用 NewIputSystem主体内容请参见:【Unity学习笔记】第十二 · New Input System 及其系统结构 和 源码浅析 注:本文使用的

    2024年01月22日
    浏览(40)
  • Verilog 学习第五节(串口发送部分)

    1:串口通信模块设计的目的是用来发送数据的,因此需要有一个数据输入端口 2:串口通信,支持不同的波特率,所以需要一个 波特率设置端口 3:串口通信的本质就是将8位并行数据通过一根信号线,在不同的时刻传输并行数据的不同位,通过多个时刻,最终将8位并行数据

    2023年04月26日
    浏览(42)
  • vue3学习笔记

    源码升级 Vue2是通过Object.defineProperty实现响应式,Vue3是通过 Proxy 实现响应式 重写虚拟DOM的实现和Tree-Sharking 1.1 使用Vue-cli创建 官方文档:Vue-cli 1.2 使用Vite创建 官方文档:V3 vite官网:Vite 什么是vite?—— 官网定义是下一代前端构建工具。 优势如下: 开发环境中,无需打包操

    2024年02月12日
    浏览(43)
  • Vue项目实战——【基于 Vue3.x + Vant UI】实现一个多功能记账本(开发导航栏及公共部分)

    系列内容 参考链接 基于 Vue3.x + Vant UI 的多功能记账本(一) 项目演示,涉及知识点 基于 Vue3.x + Vant UI 的多功能记账本(二) 搭建开发环境 Vue3 + Vant UI_多功能记账本 1、底部导航栏 components 文件夹下,创建 NavBar.vue 组件 NavBar.vue 详细内容请看代码和注释 van-tabbar-item 为标签栏

    2024年02月02日
    浏览(57)
  • [Vue]Vue3学习笔记(尚硅谷)

    本笔记根据如下笔记和视频进行整理 老师的课件笔记,不含视频 https://www.aliyundrive.com/s/B8sDe5u56BU 笔记在线版: https://note.youdao.com/s/5vP46EPC 视频:尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通 使用vue-cli创建Vue3项目,需要确保vue-cli版本在4.5.0以上。 使用vue-cli创建Vue3项目 vit

    2024年02月01日
    浏览(43)
  • 【Vue3】学习笔记-生命周期

    Vue3.0中可以继续使用Vue2.x中的生命周期钩子,但有有两个被更名: beforeDestroy 改名为 beforeUnmount destroyed 改名为 unmounted Vue3.0也提供了 Composition API 形式的生命周期钩子,与Vue2.x中钩子对应关系如下: beforeCreate === setup() created ======= setup() beforeMount === onBeforeMount mounted ======= onMo

    2024年02月11日
    浏览(43)
  • Vue3学习笔记(9.6)

    Vue3混入 混入(mixins)定义了一部分可复用的方法或者计算属性。混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项。 选项合并 当组件和混入对象含有同名选项时,这些选项将以恰当的方式混合。 比如,数据对象在内

    2023年04月09日
    浏览(36)
  • vue3组件通信学习笔记

    父组件 子组件 父组件 子组件 子组件1 子组件2 父组件 子组件 父组件 子组件 父组件 子组件 父组件 子组件 父组件 子组件 孙子组件 1、选择式写法 1、info.js 2、在组件1中使用 3、在组件2中使用 2、组合式API写法 1、在modules文件夹下新建todo.js 2、在组件1中使用 3、在组件2中使

    2024年02月09日
    浏览(44)
  • 学习笔记之Vue3(七)

    一、Vue3简介 2020年9月18日,Vue.js发布3.0版本, 代号: One Piece (海贼王) 耗时2年多、2600+次提交、 30+个RFC、 600+次PR、 99位贡献者 github 上的tags地址: https://github.com/vuejs/vue-next/releases/tag/v3.0.0 二、Vue3带来了什么 1.性能的提升 打包大小减少41%; 初次渲染快55%,更新渲染快133%; 内存

    2024年02月07日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包