likes
comments
collection
share

v-model 笔记、 v-model 报错问题记录

作者站长头像
站长
· 阅读数 23

虽然使用了 vue 这么久了, 但是对 组件上 使用 v-model 一直处于能用的阶段,没有深入研究。恰巧 昨天,后端同事在弄 pc 经办的业务的时候,跟我说浏览器控制台报错,后来我看了下,就是 V-model 的问题导致的。刚好借此机会,详细看下 v-model 在vue组件上的使用。

问题复现

问题截图

v-model 笔记、 v-model 报错问题记录

v-model 笔记、 v-model 报错问题记录

代码调用逻辑

v-model 笔记、 v-model 报错问题记录

这么看,代码的调用逻辑确实没有问题,为啥点击关闭的时候。浏览器控制台会怎么会提示报错呢。

错误排查

修改了 v-model 之后,浏览器控制台,就没有报错了。应该是 v-model 导致的。下面就详细看下 v-model 的知识,之前也只是停留在用的层面,理解的不是很深入。

v-model 笔记、 v-model 报错问题记录

v-model 笔记、 v-model 报错问题记录

解决方案

v-model 传入的数据,不要从 props 中拿,应该在 data 中重新定义一个变量,就可以了。 v-model 笔记、 v-model 报错问题记录

v-model 笔记、 v-model 报错问题记录

总结:

在使用vue 子组件的时候,通过 v-model 传入的数据,不要是 props ,要是一个 data 定义的数据。这样控制台就不会报错了。

v-model

  • 定义:v-model 是 Vue.js 中用于实现双向数据绑定的指令。它可以在表单元素和 Vue 实例之间创建一个响应式的连接,使得数据的变化能够自动反映在界面上,反之亦然

在自定义组件上使用 v-model v-model是vue中的一个指令,可以在表单控件或者组件上创建双向绑定。 实际上它只是一个语法糖,vue会自动在元素或者组件上添加value属性和input事件


<!-- vue表单控件写法 -->
<input v-model="val" />
<!-- 等价于 -->
<input :value="val" @input="($event) => val = $event.target.value" />
<!-- vue表单控件写法 --><input v-model="val" />

<!-- vue组件写法 -->
<MyComponent v-model="val" />
<!-- 等价于 -->
<MyComponent :value="val" @input="(e) => val = e" />


.sync 和 v-model 的区别 在组件中使用v-model通过props接收值和emit传值,同我们自己在父组件上绑定一个属性和emit传值,同我们自己在父组件上绑定一个属性和emit传值,同我们自己在父组件上绑定一个属性和emit传值可以少一步在父组件中监听@input的操作,所以在组件使用v-model也是很丝滑的。

链接

转载自:https://juejin.cn/post/7399273700116070450
评论
请登录