如何作到每次點擊相同的路由地址都去渲染頁面?vue
需求是後臺管理系統的菜單導航,點擊同一個菜單須要刷新頁面,跟以前作多頁面應用要達到同樣的效果,vue-router
如下是網上找到的方法(個人vue版本是2.5,vue-router 3.0)this
1.加時間戳spa
reloadRouter(path) { this.$router.push({ path, query: { t: +new Date() } }); }
此方法無效code
2.router
this.$router.go(0);
此方法有效,可是整個頁面都刷新了,blog
最後的解決辦法是建立一個空的組件,redirect.vue,ip
每次點擊跳轉到redirect空白頁,而且以params或者query把當前點擊的路由地址傳過去,(params傳值配置路由時須要name屬性)路由
redirect頁面渲染完成在取到路由帶過來的地址在進行跳轉,在空白頁面的停留時間很是短暫,這點不須要擔憂。class
完成!
這裏還需提醒一下
當你點擊菜單的時候判斷一下是否是相同的路由地址,是的話跳轉到redirect,不然正常跳轉
<template> </template> <script> export default { name: 'ZRedirect', created() { const path = this.$router.currentRoute.params; this.$router.push(path); } }; </script>
reloadRouter(path) { this.$router.push({ name: 'redirect', params: { path: path } }); this.$router.push({ path: 'redirect', query: { path: path } }); }