前言
之前一直是面试前看看vue的响应式原理,一直以为响应式原理就是v-model的实现原理,直到一次阅读文档发现之前的理解都是错误的,这才开始重新学习一下这个知识点,并且自己手写实现了一个input的v-model,才理解到其中的实现原理,(也就是面试中尝尝遇到的手写一个v-model),在这里记录下来,方便自己学习和使用。
废话少说,直接上知识。这里我会用自己写的demo详细介绍,一看就懂得那种哦。
v-model 呢其实是
<input type="text" :value="testMessage" @input="testMessage = $event.target.value">
的语法糖,它实际上做了两件事情:
- 1,绑定数据(在 <input type=“text” :value=“testMessage” )
- 2,触发input的输入事件(也就是监听) (<input type=“text” :value=“testMessage” @input=“testMessage = $event.target.value”>)
也就是说v-model就是:(下边是我写的一个小demo,有助于理解,主要是上手一遍,理解更深刻)
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42<template> <div class="test-model-essure"> <p>这里是input输入框输入时响应的文本</p> <p>{{ testMessage }}</p> <input type="text" placeholder="这是input输入框" :value="testMessage" @input="emitInput" /> </div> </template> <script> export default { data() { return { testMessage: "", }; }, methods: { emitInput($event) { this.testMessage = $event.target.value; }, }, }; </script> <style lang="scss" scoped> .test-model-essure { position: fixed; bottom: 0px; width: 100%; p, input { width: 100%; height: 30px; border: 1px solid red; display: flex; align-items: center; } } </style>
结束语
如果想理解的更深,可以把demo跑起来,自己动手操作一遍,看看是不是p标签中的testMessage是否跟输入框输入的内容实时变化。总结一下就是,要更深刻的理解某个原理,不能只是看官方文档,自己动手实现一次会理解的更深刻。
最后
以上就是开朗网络最近收集整理的关于vue v-model 的实现原理的全部内容,更多相关vue内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复