vue -- 内置指令源码分析
Published:
·
LastMod: July 03, 2022
·
2653 words
vue内置指令 🔗
“version”: “3.2.37”
vue因为在核心中内置了一些指令,开箱即用就非常nice
v-model 🔗
vue中最具特色的指令就是v-mode了,可以把input的值进行绑定,结合双向绑定,可以最少代码就能把输入的值显示到页面上
|
|
看一下vue3下面的具体实现
packages/runtime-dom/src/directives/vModel.ts
vModelDynamic 🔗
在不同的生命周期下调用不同的勾子函数,包括created
,mounted
,beforeUpdate
,updated
这四个生命周期
|
|
resolveDynamicModel 🔗
这里一看,其实是根据不同的标签名走不同的分支了,正常需要去用v-model的元素就这么几类了
|
|
getModelAssigner 🔗
这是一个非常重要的函数了,直接决定了绑定元素对外响应的所绑定的函数
|
|
最终响应的是props上的update:modelValue
所绑定的事件,这里就和vue2不太一样了,内部绑定的值也换成modelValue了
官方文档说明
https://v3.cn.vuejs.org/guide/migration/v-model.html#v-model
vModelText 常规文本绑定 🔗
created生命周期内绑定事件,lazy修饰符表示走不同的监听方法
mounted生命周期内重置输入框初始值
beforeUpdate周期内旧值和新值不相等时,会重新赋值
|
|
vModelCheckbox 🔗
用于checkbox的双向绑定
created:进行事件绑定
mounted: 设置checked的初始值
beforeUpdate: 更新响应事件,设置checked的初始值
|
|
vModelRadio 🔗
和checkbox相比绑定事件内的处理更少了
|
|
vModelSelect 🔗
|
|
vOn 🔗
用于绑定元素事件
|
|
v-on官方内置了一些修饰符,可以一定程度上减少我们平时需要加的处理代码
|
|
vShow 🔗
|
|
v-show在开发过程中也是频繁使用的指令,用于控制元素的显示隐藏
- true: display:block;
- false: display:none;
生命周期处理
- beforeMount:记录下原始display的状态,并且设置元素的display的值
- mounted:处理transition相关的业务
- updated:更新元素的display的值
- beforeUnmount:更新元素的display的值
|
|