• 开发过程中遇到奇奇怪怪的东西之二:路由嵌套层级太深导致页面刷选不成功


    路由嵌套层级太深导致页面刷选不成功

    问题描述:

    首先 路由的配置是这样的,从路由Monthly页面跳转到MonthlyDetail页面,进入MonthlyDetail 页面并没有刷新,没有反应,找了好久的问题所在,监听路由变化,onMounted生命周期中触发初始化,但是就是一直没有变动

      {
        path: '/monthly',
        name: 'Monthly',
        meta: { title: '月数据'},
        component: () => import('@/layouts/src/xx/xx/xx/monthly/index.vue'),
      },
      {
        path: '/monthlyDetail',
        name: 'MonthlyDetail',
        meta: { title: '详情'},
        component: () => import('@/layouts/src/xx/xx/xx/monthly/detail.vue'),
      },
    

    问题原因:

    是由于Vue Router的懒加载组件的缓存机制导致的。当使用import语法加载组件时,Vue Router默认会对组件进行缓存,以提高性能。这意味着一旦组件被加载过,再次访问相同的路由时,组件不会重新加载,而是直接使用缓存的组件实例。当从Monthly页面跳转到MonthlyDetail页面时,由于MonthlyDetail组件已经被加载过并缓存了,因此不会触发重新加载,导致没有看到页面刷新或反应。

    解决方法 一: 层级嵌套不要太深,修改页面组件放置文件夹目录
      {
        path: '/monthly',
        name: 'Monthly',
        meta: { title: '月数据'},
        component: () => import('@/layouts/src/xx/xx/xx/monthly/index.vue'),
      },
      {
        path: '/monthlyDetail',
        name: 'MonthlyDetail',
        meta: { title: '详情'},
        component: () => import('@/layouts/src/xx/xx/xx/monthlyDetail/detail.vue'),
      },
    
    解决方法二:路由配置中使用props: true来强制刷新组件
    {
      path: '/monthlyDetail',
      name: 'MonthlyDetail',
      meta: { title: '详情'},
      component: () => import('@/layouts/src/xx/xx/xx/monthly/detail.vue'),
      props: true
    }
    
  • 相关阅读:
    电动尾门驱动芯片TMI8720-Q1,越来越多的电机已被应用到汽车上
    PMP考试如何备考?只需3个步骤
    【DRONECAN】(三)WSL2 及 ubuntu20.04 CAN 驱动安装
    哈希表题目:键盘行
    无涯教程-JavaScript - ATAN函数
    考研分享第3期 | 211本378分上岸大连理工电子信息经验贴
    FFplay文档解读-13-设备选项,输入设备一
    Vue3中Compositions API的使用(二)
    33个常用JavaScript功能已封装成方法
    告前端同学书
  • 原文地址:https://blog.csdn.net/Smile_666666/article/details/139863176