React表格中InfiniteScroll仅更新一次的原因排查
无限滚动仅首次生效的原因分析
1. 错误的终止条件直接锁死后续加载
代码里的判断逻辑存在致命问题:
if (items.length >= items.length +1) { setHasMore( false ); return; }
这个条件永远为true——任何数值都不可能大于等于自身加1。第一次调用fetchMoreData时,就会立刻把hasMore设为false,后续滚动触发加载时,无限滚动组件会因为hasMore为false直接停止触发逻辑。
2. 未实际更新表格数据源
就算跳过上面的错误条件,当前代码只更新了offset的值,却完全没有把新加载的数据追加到items数组里。表格的渲染依赖items状态,不更新items的话,页面根本不会显示新数据,看起来就像没触发加载。
3. 异步更新的闭包陷阱
setTimeout里的setOffset(offset + 10)存在闭包问题:offset会捕获函数创建时的旧值,多次触发时可能无法正确累加偏移量,导致后续的偏移量计算完全错误。
内容的提问来源于stack exchange,提问作者Fatma Mahmoud
相关产品推荐
相关产品推荐

