求助: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
相关产品推荐
相关产品推荐

