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

果然是組件名字錯(cuò)誤了,醉了,那么vant官方文檔那么寫的原因可能就是為了突出是自家組件所以前面加了前綴<@_@>?。。?/p>
既然原因找到了,那么同樣就知道怎么同樣引入Button組件還可以使用<van-button/>的寫法,可以使用組件別名。
import {
Button as VanButton
} from 'vant'
這樣再使用<van-button/>就沒有問題了。
三、問題出現(xiàn)原因
1、一個(gè)是對組件注冊概念不清晰,誤認(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組件庫使用過程中的避坑點(diǎn)的文章就介紹到這了,更多相關(guān)Vue3 Vant組件庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue關(guān)于數(shù)據(jù)綁定出錯(cuò)解決辦法
這篇文章主要介紹了Vue關(guān)于數(shù)據(jù)綁定出錯(cuò)解決辦法的相關(guān)資料,需要的朋友可以參考下2017-05-05
關(guān)于Nuxt的五種渲染模式的差異和使用場景全解析
這篇文章主要介紹了關(guān)于Nuxt的五種渲染模式的差異和使用場景全解析,在過去傳統(tǒng)開發(fā)中,頁面渲染任務(wù)是由服務(wù)端完成的,那么Nuxt是如何渲染的呢,需要的朋友可以參考下2023-04-04
基于vue-cli創(chuàng)建的項(xiàng)目的目錄結(jié)構(gòu)及說明介紹
下面小編就為大家分享一篇基于vue-cli創(chuàng)建的項(xiàng)目的目錄結(jié)構(gòu)及說明介紹,具有很好的參考價(jià)值,希望對大家有所幫助2017-11-11
vue?@scroll監(jiān)聽滾動(dòng)條事件方式
這篇文章主要介紹了vue?@scroll監(jiān)聽滾動(dòng)條事件方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
vue3中el-table實(shí)現(xiàn)表格合計(jì)行的示例代碼
這篇文章主要介紹了vue3中el-table實(shí)現(xiàn)表格合計(jì)行,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01

