vue-router路由复用后页面没有刷新
vue-router提供了页面路由功能,可以用来构建单页面应用,在使用vue-router的动态路由匹配的时候,遇到了url变化了,但是页面却没有任何动静的问题,记录一下。
动态路由匹配url变化了,但是组件没有变化是因为vue进行了组件复用,因为两个路由都渲染同个组件,比起销毁再创建,复用则显得更加高效。不过,这也意味着组件的生命周期钩子不会再被调用。所以我们需要手动进行数据刷新。
一、使用watch来监听当前的路由变化,从而实现数据刷新。
import { watch } from "vue";
import router from "./router";
export default {
setup() {
// vue2
// watch: {
// $route(to, from) {
// // 对路由变化作出响应...
// }
// }
// vue3
watch(router.currentRoute, () => {
console.log("路由发生了变化");
});
}
};
也可以使用2.2中新加的beforeRouteUpdate路由守卫:
export default {
setup() {
},
beforeRouteUpdate((to, from, next) => {
// 不要在这里调用next
// 通过to来判断是否重载数据
console.log("路由发生了变化");
}),
}
以上就是vue3中使用vue-router-next来处理动态路由变化导致页面不刷新的方法。
二、在layout.vue,给路由增加时间时间戳。
<div class="main-box">
<transition name="fade" mode="out-in">
<router-view :key="new Date().getTime()"></router-view>
</transition>
</div>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!