vue中tab切换时请求数据重复问题

问题场景

切换tab时,会请求列表的接口,在then中进行了数据处理(添加到list后面)

ps:list在不同的tab中时同一个

快速点击tab切换时,上一个tab的请求,会在当前的tab的list中处理,导致数据不对

例如:

两个tab:成功列表 & 失败列表

点击成功列表后,且请求未返回时,点击失败列表:这个时候,失败列表中会出现成功列表的数据

解决方案:

大概的代码意思,不能直接复制运行的,参考意思就行

data() {
    return {
      random: new Date().valueOf(),
      activeTab: 0,
      list: []
    };
}


watch: {
    activeTab: {
      handler(val) {
        this.random = new Date().valueOf()
        // 请求list
        this.getList()
      },
    },
}
methods: {
    getList() {
        const random = this.random
        api().then((list) => {
            // 判断处理数据时的tab是不是没变过
            if (this.random != random) return
            this.list = this.list.concat(list)
        })
    }
}

这个只是想到的一个比较简单偷懒的方法,并不是项目中实现的最优方案。结合自己项目情况考虑为好。

axios 取消请求相对而言,比较麻烦,懒,小项目不想写

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue切换tab可能会遇到重复加载数据问题,主要原因是每次切换tab都会触发组件的created或mounted钩子函数,从而重新加载数据。 为了解决这个问题,可以采取以下几种方案: 1. 使用keep-alive组件:使用keep-alive组件可以对已经加载的组件进行缓存,当切换tab,被缓存的组件不会被销毁,再次切换回来不会重新加载数据。可以在需要缓存的组件外包裹<keep-alive>标签,实现组件的缓存。 2. 使用activated钩子函数:activated钩子函数是在被keep-alive缓存的组件进入触发的,可以在该钩子函数判断是否需要重新加载数据。如果需要重新加载数据,可以在activated钩子函数发送请求或调用方法来获取最新的数据。 3. 使用v-show指令:使用v-show指令可以根据条件动态显示或隐藏组件,而不是销毁和重新创建组件。当切换tab,通过v-show来判断是否需要显示组件,可以避免重复加载数据。 4. 使用vuex管理数据:将需要在不同tab之间共享的数据存储在vuex的状态管理,这样无论在哪个tab进行数据的修改,都会同步更新状态,切换tab不会重新加载数据。 综上所述,解决vue切换tab数据重复加载问题的方法有很多,可以根据实际情况选择适合的方案。保持组件的缓存、自主控制数据加载机、条件显示组件和使用状态管理工具等都是常见的解决方法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值