何時需要給router-view組件綁定 key

Vue文檔-動態路由匹配部分可知:

當使用路由參數時,例如從 /user/foo 導航到 /user/bar,原來的組件實例會被複用。因爲兩個路由都渲染同個組件,比起銷燬再創建,複用則顯得更加高效。不過,這也意味着組件的生命週期鉤子不會再被調用。複用組件時,想對路由參數的變化作出響應的話,你可以簡單地 watch (監測變化) $route 對象或使用 2.2 中引入的 beforeRouteUpdate 導航守衛。

由於Vue會複用相同的組件, 將不在執行created, mounted之類的鉤子, 這時候就需要通過設置路由鉤子beforeRouteUpdate或者監聽$route的變化來執行相關方法更新數據。如果不想要複用組件,可以根據需要進行如下設置。

1.設置router-view 的key爲$route.path
  • 從/user/foo => /user/bar, 由於這兩個路由的$route.path並不一樣, 所以組件被強制不復用,組件會執行created與 mounted中的內容。

  • 從/user?name=foo => /user?name=bar, 由於這兩個路由的$route.path一樣, 所以和沒設置 key 屬性一樣, 會複用組件。

2.設置router-view 的key爲$route.fullPath

從/user/foo => /user/bar 或者 /user?name=foo => /user?name=bar , 由相應前後跳轉的兩個路由的$route.fullPath並不一樣, 所以組件被強制不復用。這也意味着組件的生命週期鉤子會再次被調用,created與 mounted中的內容會被執行。

參考:https://blog.csdn.net/Terenceno/article/details/90033967

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章