vue強制重新整理元件 如何強制vue元件重新渲染

2021-10-12 14:15:17 字數 1203 閱讀 4028

【不完全翻譯系列】

有些時候vue的響應機制並不起作用(注:vue官網文件 注意事項),這個時候我們需要強制vue元件重新渲染,也或許你可以刪掉當前的元件重新建立乙個新元件。所以,如何才能正確地讓元件重新渲染?

最好的方法是給元件設定 :key ,當你需要元件重新渲染時,只需要更改key的值。

除了用key外,用的比較多的還有另外兩種方法:

用v-if

用元件的forceupdate方法

v-if

如我們將rendercomponent賦值給v-if指令:

export default ,

data() }

data(),

,複製**

我們用陣列索引作為key,具體如下:

// outputs

evan - 0

sarah - 1

james - 2

複製**

現在假如我們刪除sarah,輸出:

evan - 0

james - 1

複製**

vue會發現key為0的evan沒變,key為1的原來是sarah,現在是james,所以認為key為1處的資料變了,vue會重新渲染james,然而james實際是沒有改變的,這誤導了vue。實際上當sarah被刪除時,vue會刪除sarah和james各自對應的元件,然後重新建立乙個james對應的元件。

所以某些時候用index作為key是有問題的,我們需要乙個唯一的鍵值(通常是id)來表示key。接下來修改**如下:

const people = [,,

,複製**

現在vue通過不同的id關聯兩個不同的元件,當你刪除乙個時,vue會刪除對於的元件,而不會影響到其他。如果我們增加一項資料到陣列,同樣不會影響其他元件,vue會根據所增加的資料建立乙個新的元件與之關聯,並將其插入正確的地方。

export default ,

data() {

return {

componentkey: 0

methods: {

forcererender(){

this.componentkey += 1;

mounted(){

this.forcererender();

複製**

請記住,如果你發現你需要強制重新渲染乙個元件,那麼可能你的實現不是最好的方法。如果確實需要強制重新渲染元件,那就選擇用key的方式。

vue強制重新整理元件

把乙個元件重置到初始狀態是乙個常見的需求,推薦的做法有兩種,一種是父元件重置子元件的 prop,另一種是子元件暴露乙個重置的方法供父元件呼叫。但有些時候,子元件既沒有提供重置的方法,也沒提供 prop 來重置自己的狀態。更重要的是,這個子元件我們還動不了。於是我們就需要一種 hack 的方式來強制子...

vue 強制重新整理元件

使用vue進行開發時,如果要重新整理當前路由,則呼叫router.go 0 方法即可。但是某些情況下,我們可能要求僅僅重新整理某個元件,而不是路由,那麼我們應該怎麼做呢?如果要在元件內部中進行強制重新整理,則可以呼叫this.forceupdate 強制重新渲染元件,從而達到更新目的。重新整理當前元...

vue強制重新整理元件 強制Vue重新渲染元件的方法

強制vue重新渲染元件的方法 閱讀 217 有時候,依賴 vue 響應方式來更新資料是不夠的,相反,我們需要手動重新渲染元件來更新資料。或者,我們可能只想拋開當前的dom,重新開始。那麼,如何讓vue以正確的方式重新呈現元件呢?強制 vue 重新渲染元件的最佳方法是在元件上設定 key。當我們需要重...