Vue3 Vant組件庫(kù)使用過(guò)程中的避坑點(diǎn)
一、問(wè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)無(wú)法生效:
源代碼:
<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),所有的樣式都沒(méi)有生效,但是點(diǎn)擊事件可以正常點(diǎn)擊,然后我們打開(kāi)控制臺(tái),可以看到組件并沒(méi)有被正常的編譯成普通的div
元素,所以Vant
并沒(méi)有生效。
會(huì)不會(huì)是不支持語(yǔ)法糖這種寫(xiě)法呢。然后換成官方提供的另一種寫(xiě)法再試試。
<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>
去掉語(yǔ)法糖的寫(xiě)法,ui
效果可以正常顯示了
那么問(wèn)題來(lái)了為什么換成這種語(yǔ)法糖的這種寫(xiě)法就不行了呢。
1、是不是版本不對(duì)的問(wèn)題呢,然后降級(jí),把Vant
版本降為3版本再試試還是不行,這里就不演示了,有空的小伙伴可以去試試。
既然問(wèn)題不是版本問(wèn)題,那就還是在組件使用上有問(wèn)題。
二、解決方法
1、如何找到解決辦法
可以觀察到,語(yǔ)法糖的形式,在引入組件的方式上,少了注冊(cè)組件的這一步,因?yàn)檎Z(yǔ)法糖的寫(xiě)法,會(huì)自動(dòng)注冊(cè)不需要手動(dòng)注冊(cè)組件。
我們可以看到我們從Vant
導(dǎo)入的是Button
組件,但是使用的時(shí)候用的是<van-button/>
是不是組件名稱使用錯(cuò)誤的問(wèn)題呢。我們把組件名改成<Button/>
試試
<template> <Button @click="testClick" type="primary">主要按鈕{{ show }}</Button> </template>
組件正常被編譯了:
果然是組件名字錯(cuò)誤了,醉了,那么vant官方文檔那么寫(xiě)的原因可能就是為了突出是自家組件所以前面加了前綴<@_@>!??!
既然原因找到了,那么同樣就知道怎么同樣引入Button
組件還可以使用<van-button/>
的寫(xiě)法,可以使用組件別名。
import { Button as VanButton } from 'vant'
這樣再使用<van-button/>
就沒(méi)有問(wèn)題了。
三、問(wèn)題出現(xiàn)原因
1、一個(gè)是對(duì)組件注冊(cè)概念不清晰,誤認(rèn)為名稱不匹配,是Vant官方提供的能力,可以直接使用,所以沒(méi)去思考名稱錯(cuò)誤問(wèn)題。
2、太依賴Vant文檔。想當(dāng)然可以直接拿來(lái)用
總結(jié)經(jīng)驗(yàn)教訓(xùn)
還是應(yīng)該經(jīng)常去看vue官方文檔去鞏固基礎(chǔ)知識(shí)點(diǎn)。就會(huì)避免這種問(wèn)題。還有就是被文檔誤導(dǎo)。垃圾
到此這篇關(guān)于Vue3 Vant組件庫(kù)使用過(guò)程中的避坑點(diǎn)的文章就介紹到這了,更多相關(guān)Vue3 Vant組件庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue無(wú)法讀取HTMLCollection列表的length問(wèn)題解決
這篇文章主要介紹了Vue無(wú)法讀取HTMLCollection列表的length問(wèn)題解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03Vue中計(jì)算屬性和監(jiān)聽(tīng)屬性及數(shù)據(jù)的響應(yīng)式更新和依賴收集基本原理講解
computed是vue的配置選項(xiàng),它的值是一個(gè)對(duì)象,其中可定義多個(gè)計(jì)算屬性,每個(gè)計(jì)算屬性就是一個(gè)函數(shù),下面這篇文章主要給大家介紹了關(guān)于vue中計(jì)算屬性computed的詳細(xì)講解,需要的朋友可以參考下2023-03-03vue引入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ì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09vue.js移動(dòng)數(shù)組位置,同時(shí)更新視圖的方法
下面小編就為大家分享一篇vue.js移動(dòng)數(shù)組位置,同時(shí)更新視圖的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03Vue項(xiàng)目如何在js文件里獲取路由參數(shù)及路由跳轉(zhuǎn)
日常業(yè)務(wù)中路由跳轉(zhuǎn)的同時(shí)傳遞參數(shù)是比較常見(jiàn)的,下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目如何在js文件里獲取路由參數(shù)及路由跳轉(zhuǎn)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01