【vue 进行路由跳转,刷新页面后页面没有刷新】

当使用vue-router进行动态路由匹配时,可能会遇到页面未随路由变化而刷新的情况。这是因为Vue为了提高效率,会复用相同的组件。解决办法是在组件中使用watch监听路由变化,或者使用`beforeRouteUpdate`路由守卫来手动刷新数据。示例代码展示了如何在Vue3中实现这一功能。
摘要由CSDN通过智能技术生成

vue 进行路由跳转,刷新页面后页面没有刷新

vue 进行路由跳转,刷新页面后页面没有刷新

项目实例:如点击歌手进行跳转歌手详情,或者点击歌手返回所以歌手列表等

问题: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来处理动态路由变化导致页面不刷新的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值