You need to enable JavaScript to run this app. 求助:react-virtuoso加载更多按钮示例报generateUsers未定义错误
优惠活动
大模型
产品
解决方案
定价
更多

求助:react-virtuoso加载更多按钮示例报generateUsers未定义错误

问题根源

generateUsers是react-virtuoso官方文档示例里内置的模拟工具函数,不属于组件本身导出的API,你复刻代码时只抄了调用逻辑、没有补上这个函数的实现,所以会触发「未定义」的报错。

可直接落地的解决方法
  • 第一步:补上generateUsers的实现
    这个函数的核心作用是生成和示例渲染逻辑匹配的模拟用户数据,需要覆盖你渲染时用到的name、bgColor字段。可以把下面的代码直接放到App组件的外部作用域:
    // 生成count个用户,序号从startIndex位置开始递增
    const generateUsers = (count, startIndex) => {
      return Array.from({ length: count }, (_, index) => {
        const userId = startIndex + index
        return {
          id: userId,
          name: `测试用户 ${userId + 1}`,
          bgColor: userId % 2 === 0 ? '#f5f5f5' : '#fff'
        }
      })
    }
    
  • 第二步:顺手修正代码里的冗余写法
    • useCallback的依赖数组不需要放setUsers、setLoading:这两个是React提供的状态更新函数,引用永远稳定,写在依赖里不会带来任何实际效果
    • 异步回调里的setLoading(() => false)可以简化为setLoading(false),不需要传函数形式的更新值
  • 第三步:接真实接口的适配逻辑
    如果你不需要模拟假数据,直接把generateUsers的调用部分替换成自己的分页接口请求逻辑即可:拿到接口返回的列表数据后,同样通过setUsers把新数据和原有列表做拼接,和现有组件的写法完全兼容。

注意:现在的加载逻辑如果碰到用户连续快速点击加载按钮的情况,会因为没有loading状态锁触发重复请求,实际项目里可以在loadMore开头加个判断,如果当前已经处于loading状态就直接中断执行,避免重复发请求。

内容的提问来源于stack exchange,提问作者elisa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.24 16:45:02