react-virtualized-auto-sizer插件一般用来和react-window,配合使用,react-virtualized-auto-sizer负责获取,父元素的宽度和高度,传入到List中,但实战时,往往有些列表用到了隐藏显示, 比方说disabled:none;当使用disabled为none时,react-virtualized-auto-sizer会移除子元素;当返回时,元素会重新渲染,滚动条也会滚到顶部;
备注:如果是’visibility: hidden;'子元素会保留,但其会仍然占用宽度和高度,实战中很多场景不适用,这里不展开讨论;
项目中依赖
"react-virtualized-auto-sizer": "^1.0.20",
"react-window": "^1.8.9",
日常使用
<AutoSizer>
{
({
height, width }: {
height: number, width: number}) => (
<List
height={
height}
itemCount={
curMonitorList.length}
itemSize={
48}
width={
width}>
{
renderOrgItem}
</List>
)
}
</AutoSizer>
目前未找到方案,所以重新写了一个自定义组件完成AutoSizer要办的事
import {
useEffect, useState, useRef } from "react";
interface PropsType{
children: any
}
expo