首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >减少组件滚动反应?

减少组件滚动反应?
EN

Stack Overflow用户
提问于 2020-04-13 11:36:11
回答 2查看 51关注 0票数 1

我有一个包含很多组件的列表。当第一次加载时,它显示20个(索引0- 19)组件,当我滚动它时,它将显示更多的20个组件(索引0- 39),以此类推。当我滚动它时,是否可以只显示组件(索引20 - 39 ),然后显示(索引40 - 59)等等。

代码语言:javascript
复制
import React, {useState} from 'react';
import InfiniteScroll from "react-infinite-scroll-component";

import './App.css';


const style = {
    height: 30,
    border: "1px solid green",
    margin: 6,
    padding: 8
};



function App() {
  const [items, setItems] = useState( Array.from({length: 20}));

  const fetchMoreData = () => {
      setTimeout(()=> {
          setItems(items.concat(Array.from({length: 20})))
      }, 1500);
  };

  return (
   <div>
       <div>
           <InfiniteScroll
               dataLength={items}
               next={fetchMoreData}
               hasMore={true}
               loader={<h4>Loading...</h4>}
           >
               {items.map((i, index) => (
                   <div style={style} key={index}>
                       div - #{index}
                   </div>
               ))}
           </InfiniteScroll>
       </div>
   </div>
  );
}

export default App;

https://codesandbox.io/s/silly-silence-2rviq?file=/src/App.js:390-436

EN

回答 2

Stack Overflow用户

发布于 2020-04-13 11:47:49

您正在查找虚拟列表。

看看这些模块:

react-infinite-scroll-component没有这个开箱即用的功能。

票数 1
EN

Stack Overflow用户

发布于 2020-04-13 12:01:15

您正在使用concat向旧数据添加新数据,这就是为什么您的列表不断添加新数据的原因。只需使用新数据数组执行setItems操作,那么它将只显示20个当前数据

代码语言:javascript
复制
const fetchMoreData = () => {
      setTimeout(()=> {
          setItems(new Array(20))
      }, 1500);
  };
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61181179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档