2016-12-27 34 views
1

場景:我怎樣才能重新在不同的路由初始化相同的組件

我有一個多步驟的形式,如果用戶點擊下一步按鈕,改變路由中的唯一的事情就是例如標識形式爲/step/:id,但每當我有包含與前一個相同的組件的步驟/路由時,它只會調用第一個組件的「創建」方法,而不會調用下一個組件。

有沒有一種方法來重新創建/初始化組件每次我改變路線?

回答

1

你可以看看「反應到PARAMS更改」部分docs

一件事用使用參數路由時,要注意的是,當用戶從/用戶/富到/用戶/酒吧導航,相同的組件實例將被重用。由於兩個路由都呈現相同的組件,因此這比破壞舊實例並創建新實例更高效。但是,這也意味着組件的生命週期鉤子將不會被調用。

作出反應PARAMS在同一組件的變化,你可以簡單地看$路由對象:

watch: { 
    '$route' (to, from) { 
     //update the variables with new route params 
    } 
    }, 

您還可以看看我的類似的答案here

+0

它的工作!非常感謝 :) –

0

我遇到了另外一個問題。每當我的路由參數發生變化時,我傳遞給該組件的道具都不會更新。

在第一次加載時,prop值得到更新,但是當我進入下一步/路徑時,$route得到更新並且手錶內部的方法得到執行,但傳遞的prop的值是與第一步/路線的值相同。然後,當我再次轉到下一步/路線時,第三步/路線的組成部分的值被認爲是第二步/路線的組成部分的值。似乎道具的價值比實際路線落後一步。

這裏是我通過道具:

<el-repeater :element.sync="element"></el-repeater> 

編輯:但所有的可以在UI中看到的數據的更新和正確的,並將這些數據基於具有支柱已通過。

相關問題