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+SSM实现验证码功能

    vue+SSM实现验证码功能

    这篇文章主要介绍了vue+SSM实现验证码功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-12-12
  • 基于axios 解决跨域cookie丢失的问题

    基于axios 解决跨域cookie丢失的问题

    今天小编就为大家分享一篇基于axios 解决跨域cookie丢失的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • Vue3使用FcDesigner生成一个文档的示例代码

    Vue3使用FcDesigner生成一个文档的示例代码

    FcDesigner是基于Vue3.0的低代码可视化表单设计器,可数据驱动表单渲染,提高开发效率,本文给大家介绍了Vue3如何使用FcDesigner生成一个文档,需要的朋友可以参考下
    2026-05-05
  • vue3+arco design通过动态表单方式实现自定义筛选功能

    vue3+arco design通过动态表单方式实现自定义筛选功能

    这篇文章主要介绍了vue3+arco design通过动态表单方式实现自定义筛选,本文主要实现通过动态表单的方式实现自定义筛选的功能,用户可以自己添加筛选的项目,筛选条件及筛选内容,需要的朋友可以参考下
    2024-05-05
  • Vue实现视频播放vue-video-player、dplayer方式

    Vue实现视频播放vue-video-player、dplayer方式

    这篇文章主要介绍了Vue实现视频播放vue-video-player、dplayer方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • vue3卡片垂直无限滚动方式

    vue3卡片垂直无限滚动方式

    使用CSS动画实现DOM向上滚动,JS动态计算数据条数并实时调整滚动速度,确保在onMounted中调用以正确渲染DOM
    2025-07-07
  • 浅谈Vue Element中Select下拉框选取值的问题

    浅谈Vue Element中Select下拉框选取值的问题

    下面小编就为大家分享一篇浅谈Vue Element中Select下拉框选取值的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • vue3监听resize窗口事件(离开页面要销毁窗口事件)

    vue3监听resize窗口事件(离开页面要销毁窗口事件)

    这篇文章主要给大家介绍了关于vue3监听resize窗口事件(离开页面要销毁窗口事件)的相关资料,vue是单页面应用,路由切换后,定时器并不会自动关闭,需要手动清除,当页面被销毁时,清除定时器即可,需要的朋友可以参考下
    2023-11-11
  • Vue中Vue.extend()的使用及解析

    Vue中Vue.extend()的使用及解析

    这篇文章主要介绍了Vue中Vue.extend()的使用及解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • vue中的echarts实现宽度自适应的解决方案

    vue中的echarts实现宽度自适应的解决方案

    这篇文章主要介绍了vue中的echarts实现宽度自适应,本文给大家分享实现方案,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09

最新评论