最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • React 虚拟化长列表

    正文概述 掘金(勾崽)   2021-03-03   884

    今天在整一个项目的时候,遇到一个长列表展示的优化问题。当时想的是进行数据分页,但是需要去和后台进行沟通。我的原则是尽量不麻烦别人,因此我搜索了一些方案,最后在 react 官方上获取到了解决方法——虚拟化列表

    虚拟化列表

    我们来看下官方介绍。

    “虚拟化列表是一项“虚拟滚动”技术。这项技术会在有限的时间内仅渲染有限的内容,并奇迹般地降低重新渲染组件消耗的时间,以及创建 DOM 节点的数量。”

    看起来真的可以达到优化长列表的效果,按照流程我们试一试。

    在 react 项目中使用虚拟化列表需要使用一项模块叫 react-virtualized。

    详细内容可以去主页看看。

    虚拟化列表实现流程

    为了快速实现虚拟化列表,前面的基础配置我就不说了,直接从使用这个虚拟化包开始。

    首先,我们安装这个虚拟化包。

    npm i react-virtualized
    

    这个包对外暴漏了一些组件 api。这里我们使用的就是 List 组件。

    这个组件的属性介绍,我们可以看看github地址的介绍。

    我们简单看几个

    • width 这个 List 组件的宽度

    • height 这个 List 组件的高度

    • rowHeight 每一行的高度

    • rowRenderer 每一行渲染都要执行的函数

    代码如下:

    import React,{ Component,useState,useEffect,Fragment,Suspense} from "react"
    import {List} from 'react-virtualized';
    function getArr() {  //模拟数据
        let arr = []
        for(var i=0;i<1000;i++){
            arr.push({name:"zhangsan"+i})
        }
        return arr
    }
    let arr = getArr()
    console.log(arr)
    function App() {
        return(
            <>
            <List
                 width={400}
                 height={200}
                 rowCount={arr.length}
                 rowHeight={40}
                 rowRenderer={rowRenderer}/>
            </>
        )
    }
    function rowRenderer({key,index,style}) {
        return (
            <div key={key} style={style}>{arr[index].name}</div>
        )
    }
    ​export default App
    

    在页面中,我们就能看到下面的形式。

    React 虚拟化长列表

    在审查元素中,我们的代码中一直都会有这5个div出现,根据视图显示的内容,不会出现很多的 div。


    起源地下载网 » React 虚拟化长列表

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元