看了网上好多关于v-model实现原理的文章,不是很清楚,还跟vue双向数据绑定混在一起了。
下面说下我我对v-model的理解,请大家看下问题出在哪里了。
v-model是语法糖。
v-model原理:
- v-bind绑定响应式数据
- 通过oninput触发事件获取当前$event.target.value,然后赋值给当前变量。
不知道以下算不算是v-model原理
3.当前变量值修改,会触发object.definedProperty中的set方法,将data中的当前变量进行赋值。
v-bind绑定响应式数据,是什么原理,搜索网上也查不出来
以上是看了好多篇v-model实现原理后自己的理解,可能跟原理有些偏差,请大家多提建议,谢谢。
v-model原理
v-model
本质就是一个语法糖,可以看成是value + input
方法的语法糖。 可以通过model属性的prop
和event
属性来进行自定义。原生的v-model
,会根据标签的不同生成不同的事件和属性。响应式数据原理
Vue2.x
Vue在初始化数据时,会使用
Object.defineProperty
重新定义data
中的所有属性,当页面使用对应属性时,首先会进行依赖收集(收集当前组件的watcher
)如果属性发生变化会通知相关依赖进行更新操作(发布订阅
)。Vue3.x
Vue3.x改用
Proxy
替代Object.defineProperty
。因为Proxy
可以直接监听对象和数组的变化,并且有多达13种拦截方法。并且作为新标准将受到浏览器厂商重点持续的性能优化。