VUE 同乙個元件切換 實現DOM更新

2021-08-31 18:23:25 字數 1298 閱讀 6197

在使用vue.js開發時遇到共用乙個元件,資料相同,只是展示的內容不同。但是在每次切換時,必須執行dom更新。 如果你遇到這個問題時,可以試試在切換時 使用 v-if 來判斷,官方文件中說是:

v-if 「真正」的條件渲染,因為它會確保在切換過程中條件塊內的事件***和子元件適當地被銷毀和重建。

v-if 也是惰性的:如果在初始渲染時條件為假,則什麼也不做——直到條件第一次變為真時,才會開始渲染條件塊。

v-if

'false | true'

>

....

<

/div>官方文件 v-if

$set:如果元件中的變數改變更新dom:

例如:元件中form.user物件,發生改變需要更新dom,可以使用

this

.$set

(this

.form,

'user'

,'xiaoming'

)

官方文件 $set

3.$nexttick:在進入頁面時,無法獲取dom節點元素:

當第一次進入頁面時,無法獲取dom節點元素,可以嘗試新增 $nexttick

function

init()

)}

官方文件 $nexttick

4.元件的key,當你以上方法都無法實現dom更新,可以嘗試修改元件的key

定義元件 demo

....

<

/div>

<

/template>

呼叫元件

/* 因為每次生成的key都不一樣,當vue的虛擬dom在渲染時

發現元件當前key與以前的key不一致,就把它當成新的元件進行渲染,

如果key一致則直接復用,元件不會被重新渲染。

*/'loadkey'

>

....

<

/demo>

<

/template>

import demo from

'./demo'

export

default

data()

},methods:}}

<

/script>

如果本文對你有幫助,請大佬打賞,謝謝

實現同乙個使用者只能有乙個登入

1.在登入系統時,得到username 資料庫唯一 宣告個map key為username value 為sessionid 並放入快取中。2.寫乙個filter 類 每次請求 用username 從快取 的map裡 取出sessionid 如果不一致。remove 當時的sessionid 3.登...

vue在同乙個頁面重複引用相同元件如何區分二者

1.使用情境 我在同乙個vue中引用了同樣的乙個圖層選擇的元件,需要區分二者的選擇的radio值,如果不做區分,這二者選擇的radio值看上去將會一樣 2.解決方法 先說原理,這個重複引用的元件雖然一樣,但是二者在被建立的時候各自走了一遍生命週期,所以變數之間不衝突。首先在引用元件中新增乙個prop...

Vue在同乙個頁面的元件中向頁面的URL增加引數

場景復現 在vue中使用多個元件 模組 的時候,需要動態的去改變url的引數,以便保證使用者重新整理的同時,依然停留在當前訪問的地方,且頁面不會過載 重新整理。const query this.route let path query.path let query query.query 這裡可以用...