zoukankan      html  css  js  c++  java
  • [React] Create a Virtualized List with Auto Sizing Cells using react-virtualized and CellMeasurer

    In this lesson we'll use CellMeasurer and CellMeasurerCache to automatically calculate and cache the height of a row. This will allow us to remove the predefined rowHeight on list and allow for dynamically sized rows.

    import React, {Component} from 'react';
    import {AutoSizer, List, CellMeasurer, CellMeasurerCache} from 'react-virtualized';
    
    const ScreenInfo = ({width, height}) => (<span> {width} height: {height}</span>);
    
    class App extends Component {
    
        constructor(props) {
            super(props);
            this.cache = new CellMeasurerCache({
                fixedWidth: true,
                defaultHeight: 50
            });
        }
        renderRow = ({key, isScrolling, parent, style, index}) => {
            return (
            <CellMeasurer
                key={key}
                cache={this.cache}
                parent={parent}
                columnIndex={0}
                rowIndex={index}
            >
                <div style={style} >
                    name: {this.props.data[index].name}
                    email: {this.props.data[index].email}
                    height: <div style={{height: `${this.props.data[index].randomHeight}px`}}>{this.props.data[index].randomHeight}px</div>
                </div>
            </CellMeasurer>
            );
        };
    
        render() {
            return (
                <AutoSizer>
                    {({width, height}) => {
                        return (
                            <div>
                                <ScreenInfo width={width} height={height}/>
                                <List
                                    rowCount={this.props.data.length}
                                    deferredMeasurementCache={this.cache}
                                    rowHeight={this.cache.rowHeight}
                                    rowRenderer={this.renderRow}
                                    width={width}
                                    height={height}
                                />
    
                            </div>
                        );
                    }}
                </AutoSizer>
            );
        }
    }
    
    export default App;
  • 相关阅读:
    最短路径算法
    XMLhelper
    关于NuDaqPci 数据采集
    批处理常用命令及用法大全
    c#智能感知(设置)及实现
    单片机串行通信全解析
    Esp8266
    使用NOOBS给树莓派安装系统Raspbian
    命令提示符编译java
    javaWeb使用POI操作Excel
  • 原文地址:https://www.cnblogs.com/Answer1215/p/7083156.html
Copyright © 2011-2022 走看看