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;
  • 相关阅读:
    CSS3实现平行四边形
    [Python]图的遍历-DFS
    [Python]图的遍历-BFS
    [Python]图的遍历-拓扑排序
    [Python]哈夫曼编码
    [Python]贪心算法-Prim-和-Kruskal实现-最小生成树
    [Python]贪心算法-Dijkstra-实现
    [python3]稳定匹配算法实现和优化
    从csv文件构建Tensorflow的数据集
    Tensorflow 基础API
  • 原文地址:https://www.cnblogs.com/Answer1215/p/7083156.html
Copyright © 2011-2022 走看看