神奇的<component>

来源:10-3 修改文章编码 第二部分 - 改进 ValidateInput 组件

慕莱坞0998854

2021-05-15

老师你好,之前的validate-input组件,由于input和textarea的逻辑都是一样的,所以我使用了来代替,代码如下
图片描述
在本节的代码改造里面就出了奇怪的问题,老师把@input=updateValue和:value="inputRef.val"统一删除并改为了v-model的形式,这样反而没法拿到值了,如下
图片描述

如果我改回来的话,又没有问题了,真的很奇怪,请问老师知道这是为什么吗

写回答

2回答

张轩

2021-05-18

同学你好 使用你的源代码尝试了一下 你这里使用了动态组件,根据两个条件

1,tag 是否是一个自定义组件

2,假如不是,它是否是一个 input,textarea,select 等其他表单元素。

vue3 compiler 会生成不同的 v-model 实现的。

而你这里使用了 动态组件,也就是说这里的 v-model 实现会被判定为自定义组件的实现,而不是表单元素的实现,就会造成问题。

参考:https://github.com/vuejs/vue/issues/4763

这里两种解决方法:第一,不使用 v-model

第二,不使用 component :is

0
0

张轩

2021-05-16

同学你好 请问源代码(git)是否能提供给我 我在本地调试一下你的代码试试看 谢谢

0
1
慕莱坞0998854
老师你好,我的github地址是 https://github.com/Archsx/zhuanlan
2021-05-16
共1条回复

Vue3 + TS 仿知乎专栏企业级项目

带你完成前后端分离复杂项目,率先掌握 vue3 造轮子技能

3142 学习 · 2313 问题

查看课程