vue页面切换抖动的问题及解决过程

 更新时间:2026年03月24日 09:20:46   作者:编代码的小王  
这篇文章主要介绍了vue页面切换抖动的问题及解决过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

方法1

<keep-alive> 是Vue提供的一个内置组件,可以将组件进行缓存,以避免在切换Tab时销毁和重新创建组件。

通过 includeexclude 属性,可以精确控制哪些组件需要被缓存

<template>
  <div>
    <router-view v-if="$route.meta.keepAlive" />
    <keep-alive>
      <router-view v-if="!$route.meta.keepAlive" />
    </keep-alive>
  </div>
</template>

在路由配置中,可以使用 meta 字段标记需要缓存的组件:

const routes = [
  {
    path: '/tab1',
    component: Tab1,
    meta: { keepAlive: true },
  },
  {
    path: '/tab2',
    component: Tab2,
    meta: { keepAlive: true },
  },
  // ...
];

方法2

通过vuex,可以将Tab状态存储在全局状态中,从而实现在Tab切换时保持页面状态。

// 在 vuex 中定义一个状态,用于存储当前活动的 Tab
const store = new Vuex.Store({
  state: {
    activeTab: 'tab1',
  },
  mutations: {
    setActiveTab(state, tab) {
      state.activeTab = tab;
    },
  },
});

// 在组件中使用
<template>
  <div>
    <router-view />
  </div>
</template>

<script>
export default {
  computed: {
    activeTab() {
      return this.$store.state.activeTab;
    },
  },
  watch: {
    '$route.path': 'updateActiveTab',
  },
  methods: {
    updateActiveTab() {
      this.$store.commit('setActiveTab', this.$route.meta.tab);
    },
  },
};
</script>

方法3

通过监听路由导航守卫,在切换Tab时执行一些逻辑,例如缓存组件的状态。

router.beforeEach((to, from, next) => {
  if (to.meta.cache && from.meta.cache) {
    // 执行缓存逻辑
  }
  next();
});

方法4

通过使用动态组件,可以在切换Tab时动态加载组件,从而实现类似缓存的效果。

<template>
  <component :is="activeTabComponent" />
</template>

<script>
export default {
  data() {
    return {
      activeTabComponent: 'Tab1',
    };
  },
  watch: {
    '$route.meta.tab': 'updateActiveTab',
  },
  methods: {
    updateActiveTab() {
      this.activeTabComponent = this.$route.meta.tab;
    },
  },
};
</script>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue中使用 pako.js 解密 gzip加密字符串的方法

    vue中使用 pako.js 解密 gzip加密字符串的方法

    这篇文章主要介绍了vue项目中 使用 pako.js 解密 gzip加密字符串 的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • Vue配置文件vue.config.js配置前端代理方式

    Vue配置文件vue.config.js配置前端代理方式

    这篇文章主要介绍了Vue配置文件vue.config.js配置前端代理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • elementui中使用el-tree控件懒加载和局部刷新

    elementui中使用el-tree控件懒加载和局部刷新

    这篇文章主要介绍了elementui中使用el-tree控件懒加载和局部刷新,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • vue3动态组件使用详解

    vue3动态组件使用详解

    这篇文章主要介绍了vue3动态组件使用详解的相关资料,需要的朋友可以参考下
    2023-02-02
  • 如何测量vue应用运行时的性能

    如何测量vue应用运行时的性能

    这篇文章主要介绍了如何测量vue应用运行时的性能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06
  • vue如何把组件方法暴露到window对象中

    vue如何把组件方法暴露到window对象中

    这篇文章主要介绍了vue如何把组件方法暴露到window对象中,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • vue 面包屑导航组件封装

    vue 面包屑导航组件封装

    本文主要介绍了vue 面包屑导航组件封装,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • $router.push()中通过path跳转和通过name跳转区别解析

    $router.push()中通过path跳转和通过name跳转区别解析

    今天在路由跳转传参时发现params传参接收到的总是为空,才发现通过path和name传参是有区别的,这篇文章主要介绍了$router.push()中通过path跳转和通过name跳转有什么区别,需要的朋友可以参考下
    2023-11-11
  • vue中使用Cesium加载shp文件、wms服务、WMTS服务问题

    vue中使用Cesium加载shp文件、wms服务、WMTS服务问题

    这篇文章主要介绍了vue中使用Cesium加载shp文件、wms服务、WMTS服务问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • 前端单独实现vue动态路由的示例代码

    前端单独实现vue动态路由的示例代码

    Vue动态路由权限涉及根据用户权限动态生成路由配置,实现此功能可增强应用安全性、灵活性,提升用户体验和开发效率,本文就来介绍一下前端单独实现vue动态路由的示例代码,感兴趣的可以了解一下
    2024-09-09

最新评论