如何做到每次點擊相同的路由地址都去渲染頁面?
需求是后台管理系統的菜單導航,點擊同一個菜單需要刷新頁面,跟之前做多頁面應用要達到一樣的效果,
以下是網上找到的方法(我的vue版本是2.5,vue-router 3.0)
1.加時間戳
reloadRouter(path) { this.$router.push({ path, query: { t: +new Date() } }); }
此方法無效
2.
this.$router.go(0);
此方法有效,但是整個頁面都刷新了,
最后的解決辦法是創建一個空的組件,redirect.vue,
每次點擊跳轉到redirect空白頁,並且以params或者query把當前點擊的路由地址傳過去,(params傳值配置路由時需要name屬性)
redirect頁面渲染完成在取到路由帶過來的地址在進行跳轉,在空白頁面的停留時間非常短暫,這點不需要擔心。
完成!
這里還需提醒一下
當你點擊菜單的時候判斷一下是不是相同的路由地址,是的話跳轉到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 } }); }