自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Vue3 的 Teleport 是個(gè)性能利器,為啥大家都死活不用?

開發(fā) 前端
很多人看到剛剛的優(yōu)化手段,就想著使用?鼠標(biāo)點(diǎn)擊坐標(biāo)定位?的方式去移動(dòng)顏色選擇器,其實(shí)不需要,因?yàn)閂ue3已經(jīng)為我們提供了一個(gè)現(xiàn)成的傳送門組件Teleport。

背景

最近有一個(gè)需求是需要做消息列表的顏色切換,大概頁面如下,通過顏色選擇器去切換前面消息文本的顏色。

圖片圖片

圖片圖片

后來產(chǎn)品說這個(gè)顏色選擇器的圖標(biāo)不好看,所以換了一個(gè)圖標(biāo)來顯示顏色選擇器,于是頁面變成了下面這樣的效果,我把原本的顏色切換的圖標(biāo)隱藏起來,換了另一個(gè)圖標(biāo)代替

圖片圖片

圖片圖片

滿屏都是

后面又有新的需求,消息可能會(huì)有很多,甚至鋪滿整個(gè)屏幕。

圖片圖片

圖片圖片

這會(huì)導(dǎo)致頁面非??ǎ瑸樯赌??因?yàn)槊恳豁?xiàng)就有一個(gè)顏色選擇器!太多顏色選擇器了,我們可以審查元素,發(fā)現(xiàn)顏色選擇器面板的 DOM 非常多!?。?/p>

圖片圖片

怎么優(yōu)化呢?

其實(shí)就是因?yàn)轭伾x擇器太多了才導(dǎo)致的卡頓,那么,我們只需要保證整個(gè)頁面只有一個(gè)顏色選擇器即可!

  • 第一步:先在頁面放一個(gè)顏色選擇器。
  • 第二步:當(dāng)點(diǎn)擊圖標(biāo)1時(shí),將顏色選擇器移動(dòng)到對應(yīng)位置。
  • 第三步:當(dāng)點(diǎn)擊圖標(biāo)2時(shí),將顏色選擇器移動(dòng)到對應(yīng)位置。
  • 第四步:以此類推。

圖片圖片

Teleport

很多人看到剛剛的優(yōu)化手段,就想著使用 鼠標(biāo)點(diǎn)擊坐標(biāo)定位 的方式去移動(dòng)顏色選擇器,其實(shí)不需要,因?yàn)閂ue3已經(jīng)為我們提供了一個(gè)現(xiàn)成的傳送門組件Teleport。

我們需要先封裝一個(gè)單例顏色選擇器,確保整個(gè)頁面只有這么一個(gè),且使用 Teleport 將它包起來,并且他的圖標(biāo)是不可見的,這里渲染組件我們可以使用 h 方法。

圖片圖片

我們需要先將 Item.vue 中的顏色選擇器去掉,換成一個(gè)占位的地方,用來讓顏色選擇器傳送。

接著我們在 Index.vue 中去將這個(gè) 單例顏色選擇器 進(jìn)行掛載。

圖片圖片

我們需要將 Item.vue 中的顏色選擇器去掉,換成一個(gè)占位的地方,用來讓顏色選擇器傳送,而這個(gè)占位的地方我們需要保證是獨(dú)一無二的,不然會(huì)造成傳送出錯(cuò),這里我使用了 lodash.uniqueId。

圖片圖片

現(xiàn)在我們可以看到,整個(gè)頁面只有一個(gè)顏色選擇器了,非常好,整個(gè)頁面瞬間變得不卡頓了?。?!

圖片

再來看看效果,發(fā)現(xiàn)符合我們的預(yù)期!

圖片

適用于多 Tab 切換

Teleport 還適用于很多場景的優(yōu)化,比如多 Tab 切換,但是每一個(gè) Tab 都是顯示了同一個(gè)組件,這個(gè)時(shí)候你也可以使用 Teleport 去優(yōu)化。

示例盡量簡化,方便大家理解。

比如下面的例子,其實(shí)每一個(gè) Tab 展示的都是同一個(gè)內(nèi)容。

圖片圖片

圖片圖片

我們可以使用 Teleport 將內(nèi)容包起來,并監(jiān)聽 Tab 的切換,進(jìn)行動(dòng)態(tài)傳送。

圖片圖片

結(jié)果也能達(dá)到預(yù)期效果。

圖片 圖片

責(zé)任編輯:武曉燕 來源: 前端之神
相關(guān)推薦

2020-12-01 08:34:31

Vue3組件實(shí)踐

2021-03-31 08:01:50

Vue3 Vue2 Vue3 Telepo

2021-05-12 10:25:29

開發(fā)技能代碼

2023-04-27 11:07:24

Setup語法糖Vue3

2025-04-07 08:50:36

2023-11-29 09:05:59

Vue 3場景

2022-08-15 12:31:32

Vue3TypeScript

2021-12-01 08:11:44

Vue3 插件Vue應(yīng)用

2021-10-29 07:47:35

Vue 3teleport傳送門組件

2021-11-30 08:19:43

Vue3 插件Vue應(yīng)用

2023-11-28 09:03:59

Vue.jsJavaScript

2021-12-02 05:50:35

Vue3 插件Vue應(yīng)用

2024-08-13 09:26:07

2020-09-19 21:15:26

Composition

2021-12-08 09:09:33

Vue 3 Computed Vue2

2025-02-03 16:24:20

2025-02-17 08:58:06

2024-01-04 08:38:21

Vue3API慎用

2020-11-12 08:32:14

Vue3模板優(yōu)化

2022-06-21 12:09:18

Vue差異
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號