VUE切换页面过度动画及页面缓存问题

参考文章:Vue中切换页面时的过渡动画_zhangxu0215的专栏-CSDN博客

根据此作者写的文章修改了一些样式符合我的系统搞定了过度动画,但是会出现一些动画左右错乱的现象,原因是因为meta.index大小不一,所以应该自行根据小窗口的List进行排序即可。

watch: {
    //使用watch 监听$router的变化
    $route(to, from) {
      let toIndex = 0;
      let fromIndex = 0;
      this.$store.state.tagsView.visitedViews.forEach((item,index)=>{
        if(item.path == to.path){
          toIndex = index;
        }else if(item.path == from.path){
          fromIndex = index;
        }
      })
      //如果to的索引值为0,不添加任何动画;如果to索引大于from索引,判断为前进状态,反之则为后退状态,(原为to.meta.index)
      if (toIndex < fromIndex) {
        this.transitionName = "slide-right";
      } else {
        this.transitionName = "slide-left";
      }
    }
  },

每个系统中的小窗口列表在store都不太一样,自己查找一下哈,本人的是this.$store.state.tagsView.visitedViews。

然后是和缓存之间有冲突,如果使用v-if="$route.meta.keepAlive",会报错,所以我们改用include的方式。

<transition :name="transitionName">
   <keep-alive include="keepAlive">
     <router-view></router-view>
   </keep-alive>
</transition>

每个需要缓存的页面加上name即可。只要有name就被缓存了

export default {
  //写此name即为开启缓存
  name:'keepAlive',
  data () {
    return {

    }
  }
}

被缓存的页面还会出现不刷新的现象,我们需要的是查询参数被缓存,但是列表需要刷新所以要用beforeRouteEnter进行操作。

  methods: {
      getInfo () {
          //列表查询接口
      }
  },
  beforeRouteEnter (to, from, next) {
    next(vm =>{
      vm.getInfo();
    });
  },
  created(){
    //不需要开始加载了,改用路由进入加载
    //this.getInfo();
  }

UniApp是一个基于Vue.js的跨平台UI框架,用于快速开发原生应用。Tab切换卡顿可能是由于性能优化不足、组件渲染效率低或数据同步延迟等原因导致的。以下是一些解决 UniApp Tab 切换卡顿的常见方法: 1. **优化界面渲染**: - 减少组件层级和复杂度,避免过度嵌套和不必要的计算。 - 使用`<keep-alive>`标签来缓存Tab页面,避免不必要的重新渲染。 - 使用懒加载策略,只在需要时动态加载内容。 2. **数据绑定优化**: - 避免在组件切换时进行大量的数据绑定和处理,确保数据更新最小化。 - 使用`v-model.lazy`或`$nextTick()`确保数据更新完成后再操作DOM。 3. **代码分割**: - 对大型Tab页进行代码分割,将大模块拆分为多个小模块,提高加载速度。 4. **网络请求优化**: - 使用异步加载和网络预加载,减少页面切换时的网络请求。 - 避免在`created`生命周期钩子中发起长时间的网络请求。 5. **使用性能检测工具**: - 使用UniApp的官方性能分析工具(如`uni-performance`)检查并定位瓶颈。 6. **代码重构和模块化**: - 优化业务逻辑,合理划分组件职责,提高代码复用和可维护性。 7. **硬件适配**: - 对不同设备的性能进行适配,比如减少动画效果或者调整图片资源。 8. **内存管理**: - 及时清除不需要的引用,避免内存泄漏。 如果你遇到具体问题,提供更详细的卡顿情况或代码片段,我可以给出更针对性的建议。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值