vite+vue渲染十万条数据

该代码段展示了在Vue应用中使用axios获取数据并采用递归分批加载到数组中的过程。问题在于递归时初始下标处理不当导致数据重复。通过修正下标变量ii的计算,避免了数据重复并确保循环正确终止。最终实现了每次加载200条数据直到所有数据加载完毕的效果。
摘要由CSDN通过智能技术生成

 

 整体代码

<script setup>

import axios from 'axios'
import { ref } from 'vue'

const arr = ref([])
const arr2 = ref([])

const doclick = () => {
  axios.get('/api/list').then(res => {

    console.log(res);
    arr.value = res.data
    console.log(arr.value, '996');
    render()

  })


  function render(num = 0) {
    const total = arr.value.length
    const max = num + 200
   // console.log(arr2.value.length, 'ccccccccccccccccccccccccc');
    if (max > total) return

    setTimeout(() => {
      const ii = num ? num + 1 : 0
      // console.log(ii, 'mmmmmmm');
      for (let i = ii; i - 1 < max; i++) {
        arr2.value.push(arr.value[i])
        
       // console.log(i,'iiiiiiiiiiiiiiiiiii');
      }
      
      render(num += 200)
    }, 50)
    
  }
}





</script>

点击调用函数,并使用延时器,每次push数据200条,并进行递归

遇到的问题就是:递归进入,i如果直接等于num的话,数据从200进行再次push,

原因是:第一次push到200条,之后进入递归,又从200条开始,导致下标200的数据会被push到数组2次,以此类推

加判断 赋值新的 ii 作为起始下标

再次遇到问题 

ii因为每次都是num+1  所以ii实际会大1,所以结束条件i < max ,i自增到99999会结束循环,所以在结束条件i 需要 -1

最后展示效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值