针对大数据量的渲染优化库:react-virtual的基本使用

针对大数据量的渲染优化库:react-virtual(List)的基本使用

react-virtual库的安装及引用

安装

github地址:https://github.com/bvaughn/react-virtualized

使用命令:

npm install react-virtualized --save

安装过程可能会出现(react版本库以及react-virtualized库之间的存在版本冲突问题)

npm ERR! peer react@"^15.3.0 || ^16.0.0-alpha" from react-virtualized@9.22.3

则使用:

npm install react-virtualized --legacy-peer-deps

使用

// react-virtualized长列表优化
import 'react-virtualized/styles.css';
// List可用于渲染列表内需要重复渲染的节点,
import List from 'react-virtualized/dist/commonjs/List';
// AutoSizer库可以以用于自动获取子List所在父级的宽高,以回调参数的方式传递给List
import AutoSizer from 'react-virtualized/dist/commonjs/AutoSizer';


export default class index extends Component {
  constructor(props: any) {
    super(props);
    
    this.state = {
      // 生成长度为1000的随机数组
      list: new Array(1000).fill(Math.rendom(0, 1)* 100.toFixed(0))
    }
    
    this.rowRenderer = this.rowRenderer.bind(this);
  }
  
  // rowRenderer返回需要重复进行渲染的节点
  rowRenderer(arg: { key: Key, index: number, isScrolling: unknown, isVisible: any, style: any }) { // 此处为ts写法,js可直接使用对象解构,在函数内使用
    return (
      <div key={arg.key} style={arg.style}> // stlye一定要用上
        {arg.index}
        {this.state.list[index]}
      </div>
    )
  }
  
  render() {
    return (
      <AutoSizer>
        {({ width, height }) => ( // 此处width,height为AutoSizer自动获取的父级高度,List可采用也可自定义给定List的高度
          <List
            width={width} // 定义列表宽度
            height={30 * this.props.datalist.length}  // 定义列表总高度
            rowHeight={30}   // 定义每个item的高度
            rowCount={this.props.datalist.length} // 需要渲染的列表条数,同时也相当于规定了会渲染的数据条数
            rowRenderer={this.rowRenderer} // 需要重复渲染的节点
          />
        )}
      </AutoSizer>
    )
  }
}

其他用法及细节参考:使用文档

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
React-virtualized是一个非常流行的React,它可以帮助我们实现大数据的虚拟滚动效果。下面是一个使用React-virtualized实现虚拟滚动的表格的示例代码: 首先,我们需要安装React-virtualized: ``` npm install react-virtualized --save ``` 然后,我们需要引入Table和Column组件: ``` import { Table, Column } from 'react-virtualized'; ``` 接下来,我们可以定义一个数据源,例如: ``` const list = [ { name: '张三', age: '18', address: '北京市海淀区' }, { name: '李四', age: '20', address: '北京市朝阳区' }, { name: '王五', age: '22', address: '北京市西城区' }, // ... // 这里可以添加更多的数据 ]; ``` 然后,我们可以定义一个Table组件,指定它的rowCount和rowGetter属性: ``` <Table rowCount={list.length} rowGetter={({ index }) => list[index]} > ``` 接下来,我们可以添加一些Column组件,定义每一列的属性: ``` <Column label="姓名" dataKey="name" width={100} /> <Column label="年龄" dataKey="age" width={100} /> <Column label="地址" dataKey="address" width={200} /> ``` 最后,我们需要在Table组件中添加一些属性,以启用虚拟滚动: ``` <Table rowCount={list.length} rowGetter={({ index }) => list[index]} headerHeight={20} rowHeight={30} width={600} height={400} > ``` 在上面的代码中,我们设置了headerHeight和rowHeight属性来指定表头和每一行的高度,width和height属性用于指定表格的宽度和高度。React-virtualized会自动根据这些属性来计算出需要渲染的行数,并且只渲染当前可见的行,以实现虚拟滚动的效果。 完整的代码示例: ``` import React, { Component } from 'react'; import { Table, Column } from 'react-virtualized'; const list = [ { name: '张三', age: '18', address: '北京市海淀区' }, { name: '李四', age: '20', address: '北京市朝阳区' }, { name: '王五', age: '22', address: '北京市西城区' }, // ... // 这里可以添加更多的数据 ]; class VirtualTable extends Component { render() { return ( <Table rowCount={list.length} rowGetter={({ index }) => list[index]} headerHeight={20} rowHeight={30} width={600} height={400} > <Column label="姓名" dataKey="name" width={100} /> <Column label="年龄" dataKey="age" width={100} /> <Column label="地址" dataKey="address" width={200} /> </Table> ); } } export default VirtualTable; ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值