vue 組件使用中的一些細(xì)節(jié)點(diǎn)
細(xì)節(jié)一
基礎(chǔ)例子

運(yùn)行結(jié)果:

以上大家都懂,這邊就不多說(shuō),回到代碼里,有時(shí)候我們需要 tbody 里面每一行是一個(gè)子組件,那我們代碼可以怎么寫(xiě)呢?我們可以這樣寫(xiě),定義一個(gè)全局組件,如下:

然后我們?cè)?body 里面可以這么調(diào)用:

運(yùn)行結(jié)果:

可以看到 row 是有打印出來(lái)了,但它實(shí)際上里面沒(méi)有任務(wù)內(nèi)容,那我們的問(wèn)題出在哪呢?回到代碼我們發(fā)現(xiàn)我們?cè)趧?chuàng)建 vue 實(shí)例的時(shí)候沒(méi)有指定要掛載的點(diǎn),所以我們通過(guò) el 來(lái)指定 vue 接管的 Dom ,如下:

運(yùn)行結(jié)果:

感覺(jué)上沒(méi)有問(wèn)題,但真的是這樣嗎?我們通過(guò)檢查元素,查看DOM結(jié)構(gòu):

大家可以看到出錯(cuò)啦?正常的三個(gè) tr 應(yīng)該是在 tbody 里面, 而現(xiàn)在跑到跟 tbody 同一層了,這是怎么回事呢?
在H5的規(guī)范里面,要求我們 table 里面有 tbody, tbody 里面必須得放 tr,而現(xiàn)在我們使用子組件里面寫(xiě)成 row, 所以我們的瀏覽器在解析的時(shí)候就會(huì)出問(wèn)題。
那么我們一旦遇到這種情況出現(xiàn) bug 要怎么解呢? 這時(shí)候我們可以借助 vue 提供的 is 屬性來(lái)解決這個(gè)問(wèn)題。很簡(jiǎn)單, tbody 里面只能寫(xiě) tr, 那我們就都寫(xiě) tr,可是實(shí)際上我們要顯示 tr 并不是就真的只顯示 tr 空的內(nèi)容,我們需要顯示 row 組件的內(nèi)容,那怎么做?
我們可以在 tr 多一個(gè)屬性is 讓它等于 row, 如下:

這段代碼的意思是:我要用一個(gè)組件,但是我不能直接寫(xiě)這個(gè)組件,所以我們寫(xiě)了一個(gè) tr, 我們用 is 表示雖然我寫(xiě)的是 tr, 但它表示是 row 組件,這樣能既能符合 H5 的規(guī)范又能顯示我們組件的內(nèi)容 ,程序就不會(huì)有 bug 了。
運(yùn)行結(jié)果:

一切正常。
同樣我們使用 ul, select 標(biāo)簽的時(shí)候,也可以用這種方法。
細(xì)節(jié)二
基礎(chǔ)例子

我們定義了一個(gè)組件 row,里面有段文本,如果我們想把這段文本單獨(dú)提取出來(lái)用變量表示 ,那么你很有可能會(huì)這樣寫(xiě):

看似完美,在打開(kāi)瀏覽器運(yùn)行你會(huì)發(fā)現(xiàn),bug 正向你招手:

主要意思是 data 是要一個(gè)函數(shù),而不是一個(gè)對(duì)象,什么情況,在根組件,也就是最外層 vue 的實(shí)例,我們通過(guò)對(duì)象定義是 ok 的,但是在非根組件的子組件這樣定義是不行滴。data 定義要求是一個(gè)函數(shù),同時(shí)這個(gè)函數(shù)要求返回一個(gè)對(duì)象,如下:

運(yùn)行結(jié)果:

這樣問(wèn)題就解決啦。
之所以這么定義,原因是一個(gè)子組件不像根組件只被調(diào)用一次,而是可以多次調(diào)用,那么每一個(gè)子組件的數(shù)據(jù)我們不希望和其它的子組件產(chǎn)生沖突或者說(shuō)每個(gè)子組件都應(yīng)該有一個(gè)自己的數(shù)據(jù)域,通過(guò)函數(shù)返回一個(gè)對(duì)象就可以實(shí)現(xiàn)這個(gè)需求。
細(xì)節(jié)三
基礎(chǔ)例子

運(yùn)行,點(diǎn)擊彈出click,沒(méi)毛病。vue 不建議我們?cè)诖a里面操作 Dom, 但是在處理一些極其復(fù)雜的動(dòng)畫(huà)效果,我們還真得操作 Dom, 那么在 vue 中如何操作 Dom 呢? 我們可以通過(guò) ref 引用的方式,如下:

這時(shí)候我們有個(gè)需求,就是點(diǎn)擊div 的時(shí)候,把里面的內(nèi)容打印出來(lái),我們可以通過(guò)引用獲取div節(jié)點(diǎn),然后打印div 里面的內(nèi)容即可:

運(yùn)行結(jié)果:

總結(jié)
以上所述是小編給大家介紹的vue 組件使用中的一些細(xì)節(jié)點(diǎn),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Vue.js學(xué)習(xí)記錄之在元素與template中使用v-if指令實(shí)例
這篇文章主要給大家介紹了關(guān)于Vue.js學(xué)習(xí)記錄之在元素與template中使用v-if指令的相關(guān)資料,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),相信對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-06-06
使用Vue進(jìn)行數(shù)據(jù)可視化實(shí)踐分享
在當(dāng)今的數(shù)據(jù)驅(qū)動(dòng)時(shí)代,數(shù)據(jù)可視化變得越來(lái)越重要,它能夠幫助我們更直觀地理解數(shù)據(jù),從而做出更好的決策,在這篇博客中,我們將探索如何使用 Vue 和一些常見(jiàn)的圖表庫(kù)(如 Chart.js)來(lái)制作漂亮的數(shù)據(jù)可視化效果,需要的朋友可以參考下2024-10-10
Vue Element前端應(yīng)用開(kāi)發(fā)之界面語(yǔ)言國(guó)際化
我們開(kāi)發(fā)的系統(tǒng),一般可以不用考慮語(yǔ)言國(guó)際化的問(wèn)題,大多數(shù)系統(tǒng)一般是給本國(guó)人使用的,而且直接使用中文開(kāi)發(fā)界面會(huì)更加迅速 一些,不過(guò)框架最好能夠支持國(guó)際化的處理,以便在需要的時(shí)候,可以花點(diǎn)時(shí)間來(lái)實(shí)現(xiàn)多語(yǔ)言切換的處理,使系統(tǒng)具有更廣泛的受眾用戶。2021-05-05
在vue中實(shí)現(xiàn)給每個(gè)頁(yè)面頂部設(shè)置title
這篇文章主要介紹了在vue中實(shí)現(xiàn)給每個(gè)頁(yè)面頂部設(shè)置title,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
vue 路由meta 設(shè)置導(dǎo)航隱藏與顯示功能的示例代碼
這篇文章主要介紹了vue 路由meta 設(shè)置導(dǎo)航隱藏與顯示功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09

