目录一、问题二、解决方法三、问题出现原因总结经验教训一、问题 vue3版本使用vant失败,具体是在使用组件时失效。 具体实例:Vue版本3 - Vant版本4 根据Vant官方文档
vue3版本使用vant失败,具体是在使用组件时失效。
具体实例:Vue版本3 - Vant版本4
根据Vant官方文档可以知道使用组件应该这样引入使用
import {<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E--> Button } from 'vant';
<van-button type="primary">主要按钮</van-button>
但是我在实际根据官方文档使用却发现无法生效:
源代码:
<template>
<van-button @click="testClick" type="primary">主要按钮{{ show }}</van-button>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
import {
Button
} from 'vant'
import 'vant/es/button/style';
const show = ref(false);
const testClick = () => {
show.value = !show.value
};
</script>
实际发现,所有的样式都没有生效,但是点击事件可以正常点击,然后我们打开控制台,可以看到组件并没有被正常的编译成普通的div
元素,所以Vant
并没有生效。
会不会是不支持语法糖这种写法呢。然后换成官方提供的另一种写法再试试。
<script lang="ts">
import { ref } from 'vue'
import {
Button
} from 'vant'
import 'vant/es/button/style';
export default {
components: {
[Button.name]: Button,
},
setup() {
const show = ref<boolean>(false);
const testClick =()=> {
show.value = !show.value
}
return {
show,
testClick
}
}
}
</script>
去掉语法糖的写法,ui
效果可以正常显示了
那么问题来了为什么换成这种语法糖的这种写法就不行了呢。
1、是不是版本不对的问题呢,然后降级,把Vant
版本降为3版本再试试还是不行,这里就不演示了,有空的小伙伴可以去试试。
既然问题不是版本问题,那就还是在组件使用上有问题。
1、如何找到解决办法
可以观察到,语法糖的形式,在引入组件的方式上,少了注册组件的这一步,因为语法糖的写法,会自动注册不需要手动注册组件。
我们可以看到我们从Vant
导入的是Button
组件,但是使用的时候用的是<van-button/>
是不是组件名称使用错误的问题呢。我们把组件名改成<Button/>
试试
<template>
<Button @click="testClick" type="primary">主要按钮{{ show }}</Button>
</template>
组件正常被编译了:
果然是组件名字错误了,醉了,那么vant官方文档那么写的原因可能就是为了突出是自家组件所以前面加了前缀<@_@>!!!
既然原因找到了,那么同样就知道怎么同样引入Button
组件还可以使用<van-button/>
的写法,可以使用组件别名。
import {
Button as VanButton
} from 'vant'
这样再使用<van-button/>
就没有问题了。
1、一个是对组件注册概念不清晰,误认为名称不匹配,是Vant官方提供的能力,可以直接使用,所以没去思考名称错误问题。
2、太依赖Vant文档。想当然可以直接拿来用
还是应该经常去看vue官方文档去巩固基础知识点。就会避免这种问题。还有就是被文档误导。垃圾
到此这篇关于Vue3 Vant组件库使用过程中的避坑点的文章就介绍到这了,更多相关Vue3 Vant组件库内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Vue3Vant组件库使用过程中的避坑点
本文链接: https://www.lsjlt.com/news/203212.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-01-12
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0