Vue3 + vite2 切换路由卡顿问题

demongao
2104
2022-09-01

问题描述:

页面菜单都是通过接口动态加载,component采用懒加载方式引入,首次进入页面加载很快,但是点击菜单切换页面时,会卡顿3~5秒钟。

问题原因

原因1:

标签栏导航中使用watch监听整个useRouter()引发浏览器页面卡死。屏蔽掉发现问题解决!

主要原因:

标签页导航数据存储到store中,
期初设计的时候, tabs 每项标签页数据存储route信息,就是这一句导致切页卡顿
route: _.cloneDeep(route)

/** 切换标签页 */
  const switchTab = (route: RouteLocationNormalizedLoaded) => {
    state.activeKey = route.fullPath;
    const index = state.tabs.findIndex((tab) => tab.path === route.fullPath);
    if (index === -1)
      state.tabs.push({
        path: route.fullPath,
        title: route.meta?.title as string,
        route: _.cloneDeep(route), // 导致切页卡顿原因!!
      });
  };