账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue多路由共用一个组件组件刷新问题
    • 昵称过于强大无法显示2020-01-01 00:00
    • 11
    29
    0

    vue详情页 多个路由共用一个组件 每次打开一个新的详情页都会发出axios请求初始化数据 但是详情页之间切换数据永远都会刷新来更新数据 现在需求时详情页之间切换不刷新页面但是数据还是更新了 怎么办

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 共 0 条
    • 欲望本就很美 普通会员 1楼

      在Vue中,当你有多个路由并且每个路由都使用同一个组件时,可能会遇到组件刷新的问题。为了解决这个问题,可以考虑以下几种解决方案:

      1. 使用路由守卫:路由守卫可以在组件被挂载到页面之前和之后执行。当路由发生变化时,守卫会触发一个生命周期方法,你可以在这个方法中检查路由是否发生变化,并根据需要更新组件的state。

      ```javascript import { createRoute, createWebHistory, createRouteMatch } from 'vue-router';

      export default { created() { this.$router.matched.forEach((match) => { this.updateComponent(match); }); }, methods: { updateComponent(match) { // 更新组件的state }, }, }; ```

      1. 使用路由懒加载:路由懒加载是一种在组件被挂载到页面之前加载所有相关路由的方法。这可以在路由发生变化时避免不必要的组件刷新。

      ```javascript import { createRoute, createWebHistory, createRouteMatch } from 'vue-router';

      export default { created() { this.$router.matched.forEach((match) => { this.loadRoute(match); }); }, methods: { loadRoute(match) { // 加载路由 }, }, }; ```

      1. 使用Vue Router的Vue Router实例来管理路由和组件,而不是全局变量。这样,你可以将路由和组件的生命周期方法封装到路由实例中,这样在路由发生变化时,这些生命周期方法会被调用。

      ```javascript import { createRoute, createWebHistory, createRouteMatch } from 'vue-router';

      export default { routes: [ // 假设你有三个路由 { path: '/home', component: Home, }, { path: '/about', component: About, }, // ... ], created() { // 创建路由实例 this.$router = createWebHistory(this.$router);

      // 挂载组件
      this.$router.push('/home');
      this.$router.push('/about');
      

      }, methods: { // 在组件挂载到页面之前执行的生命周期方法 updateComponent(match) { // 更新组件的state }, }, }; ```

      以上就是解决Vue多路由共用一个组件刷新问题的一些方法。希望对你有所帮助。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部