Vue3 Vant組件庫(kù)使用過程中的避坑點(diǎn)
一、問題
vue3版本使用vant失敗,具體是在使用組件時(shí)失效。
具體實(shí)例:Vue版本3 - Vant版本4
根據(jù)Vant官方文檔可以知道使用組件應(yīng)該這樣引入使用
import {<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E--> Button } from 'vant';<van-button type="primary">主要按鈕</van-button>
但是我在實(shí)際根據(jù)官方文檔使用卻發(fā)現(xiàn)無法生效:
源代碼:
<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>
實(shí)際發(fā)現(xiàn),所有的樣式都沒有生效,但是點(diǎn)擊事件可以正常點(diǎn)擊,然后我們打開控制臺(tái),可以看到組件并沒有被正常的編譯成普通的div元素,所以Vant并沒有生效。


會(huì)不會(huì)是不支持語法糖這種寫法呢。然后換成官方提供的另一種寫法再試試。
<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、是不是版本不對(duì)的問題呢,然后降級(jí),把Vant版本降為3版本再試試還是不行,這里就不演示了,有空的小伙伴可以去試試。
既然問題不是版本問題,那就還是在組件使用上有問題。
二、解決方法
1、如何找到解決辦法
可以觀察到,語法糖的形式,在引入組件的方式上,少了注冊(cè)組件的這一步,因?yàn)檎Z法糖的寫法,會(huì)自動(dòng)注冊(cè)不需要手動(dòng)注冊(cè)組件。
我們可以看到我們從Vant導(dǎo)入的是Button組件,但是使用的時(shí)候用的是<van-button/>是不是組件名稱使用錯(cuò)誤的問題呢。我們把組件名改成<Button/>試試
<template>
<Button @click="testClick" type="primary">主要按鈕{{ show }}</Button>
</template>
組件正常被編譯了:

果然是組件名字錯(cuò)誤了,醉了,那么vant官方文檔那么寫的原因可能就是為了突出是自家組件所以前面加了前綴<@_@>?。?!
既然原因找到了,那么同樣就知道怎么同樣引入Button組件還可以使用<van-button/>的寫法,可以使用組件別名。
import {
Button as VanButton
} from 'vant'
這樣再使用<van-button/>就沒有問題了。
三、問題出現(xiàn)原因
1、一個(gè)是對(duì)組件注冊(cè)概念不清晰,誤認(rèn)為名稱不匹配,是Vant官方提供的能力,可以直接使用,所以沒去思考名稱錯(cuò)誤問題。
2、太依賴Vant文檔。想當(dāng)然可以直接拿來用
總結(jié)經(jīng)驗(yàn)教訓(xùn)
還是應(yīng)該經(jīng)常去看vue官方文檔去鞏固基礎(chǔ)知識(shí)點(diǎn)。就會(huì)避免這種問題。還有就是被文檔誤導(dǎo)。垃圾
到此這篇關(guān)于Vue3 Vant組件庫(kù)使用過程中的避坑點(diǎn)的文章就介紹到這了,更多相關(guān)Vue3 Vant組件庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue無法讀取HTMLCollection列表的length問題解決
這篇文章主要介紹了Vue無法讀取HTMLCollection列表的length問題解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
Vue中計(jì)算屬性和監(jiān)聽屬性及數(shù)據(jù)的響應(yīng)式更新和依賴收集基本原理講解
computed是vue的配置選項(xiàng),它的值是一個(gè)對(duì)象,其中可定義多個(gè)計(jì)算屬性,每個(gè)計(jì)算屬性就是一個(gè)函數(shù),下面這篇文章主要給大家介紹了關(guān)于vue中計(jì)算屬性computed的詳細(xì)講解,需要的朋友可以參考下2023-03-03
vue引入iconfont圖標(biāo)庫(kù)的優(yōu)雅實(shí)戰(zhàn)記錄
使用組件庫(kù)時(shí),圖標(biāo)往往不能滿足需求,所以我們常常需要用到第三方圖標(biāo)庫(kù),這篇文章主要給大家介紹了關(guān)于vue引入iconfont的相關(guān)資料,需要的朋友可以參考下2021-06-06
在vue中v-bind使用三目運(yùn)算符綁定class的實(shí)例
今天小編就為大家分享一篇在vue中v-bind使用三目運(yùn)算符綁定class的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09
vue.js移動(dòng)數(shù)組位置,同時(shí)更新視圖的方法
下面小編就為大家分享一篇vue.js移動(dòng)數(shù)組位置,同時(shí)更新視圖的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-03-03
Vue項(xiàng)目如何在js文件里獲取路由參數(shù)及路由跳轉(zhuǎn)
日常業(yè)務(wù)中路由跳轉(zhuǎn)的同時(shí)傳遞參數(shù)是比較常見的,下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目如何在js文件里獲取路由參數(shù)及路由跳轉(zhuǎn)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01

