溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用vue組件時需要注意哪些問題

發布時間:2021-01-18 16:50:23 來源:億速云 閱讀:237 作者:Leah 欄目:web開發

這篇文章給大家介紹使用vue組件時需要注意哪些問題,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

細節一

基礎例子

使用vue組件時需要注意哪些問題

運行結果:

使用vue組件時需要注意哪些問題

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

使用vue組件時需要注意哪些問題

然后我們在 body 里面可以這么調用:

使用vue組件時需要注意哪些問題

運行結果:

使用vue組件時需要注意哪些問題

可以看到 row 是有打印出來了,但它實際上里面沒有任務內容,那我們的問題出在哪呢?回到代碼我們發現我們在創建 vue 實例的時候沒有指定要掛載的點,所以我們通過 el 來指定 vue 接管的 Dom ,如下:

使用vue組件時需要注意哪些問題

運行結果:

使用vue組件時需要注意哪些問題

感覺上沒有問題,但真的是這樣嗎?我們通過檢查元素,查看DOM結構:

使用vue組件時需要注意哪些問題

大家可以看到出錯啦?正常的三個 tr 應該是在 tbody 里面, 而現在跑到跟 tbody 同一層了,這是怎么回事呢?

在H5的規范里面,要求我們 table 里面有 tbody, tbody 里面必須得放 tr,而現在我們使用子組件里面寫成 row, 所以我們的瀏覽器在解析的時候就會出問題。

那么我們一旦遇到這種情況出現 bug 要怎么解呢? 這時候我們可以借助 vue 提供的 is 屬性來解決這個問題。很簡單, tbody 里面只能寫 tr, 那我們就都寫 tr,可是實際上我們要顯示 tr 并不是就真的只顯示 tr 空的內容,我們需要顯示 row 組件的內容,那怎么做?

我們可以在 tr 多一個屬性is 讓它等于 row, 如下:

使用vue組件時需要注意哪些問題

這段代碼的意思是:我要用一個組件,但是我不能直接寫這個組件,所以我們寫了一個 tr, 我們用 is 表示雖然我寫的是 tr, 但它表示是 row 組件,這樣能既能符合 H5 的規范又能顯示我們組件的內容 ,程序就不會有 bug 了。

運行結果:

使用vue組件時需要注意哪些問題

一切正常。

同樣我們使用 ul, select 標簽的時候,也可以用這種方法。

細節二

基礎例子

使用vue組件時需要注意哪些問題

我們定義了一個組件 row,里面有段文本,如果我們想把這段文本單獨提取出來用變量表示 ,那么你很有可能會這樣寫:

使用vue組件時需要注意哪些問題

看似完美,在打開瀏覽器運行你會發現,bug 正向你招手:

使用vue組件時需要注意哪些問題

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

使用vue組件時需要注意哪些問題

運行結果:

使用vue組件時需要注意哪些問題

這樣問題就解決啦。

之所以這么定義,原因是一個子組件不像根組件只被調用一次,而是可以多次調用,那么每一個子組件的數據我們不希望和其它的子組件產生沖突或者說每個子組件都應該有一個自己的數據域,通過函數返回一個對象就可以實現這個需求。

細節三

基礎例子

使用vue組件時需要注意哪些問題

運行,點擊彈出click,沒毛病。vue 不建議我們在代碼里面操作 Dom, 但是在處理一些極其復雜的動畫效果,我們還真得操作 Dom, 那么在 vue 中如何操作 Dom 呢? 我們可以通過 ref 引用的方式,如下:

使用vue組件時需要注意哪些問題

這時候我們有個需求,就是點擊div 的時候,把里面的內容打印出來,我們可以通過引用獲取div節點,然后打印div 里面的內容即可:

使用vue組件時需要注意哪些問題

運行結果:

使用vue組件時需要注意哪些問題

關于使用vue組件時需要注意哪些問題就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女