我想使用 react-window 的原因是为了避免过多的 DOM 问题。另外,因为我正在使用nextjs
并且React.lazy()
不在那里工作。我有一个动态生成子组件的组件,您可以在此处Layout
看到正在解决的问题。但是,在我看来,不可能事先得到孩子们的身高。
除了LayoutWrapper
如上一个问题所示,VariableSizeList
正在为我设置如下:
const [heights, setHeights] = React.useState<number[]>([])
React.useEffect(() => {
// This will actually returns [] which I don't want to happen.
// I want it to return an array of heights
const data = onMount()
setHeights(data)
}, [onMount])
const Row = ({index, style}: ListChildComponentProps) => (
<div style={style}>{childrenArr[index]}</div>
)
const getItemSize = (index: number) => heights[index]
return (
<AutoSizer disableWidth>
{({height, width}) => (
<VariableSizeList
height={height}
itemCount={childrenArr.length}
itemSize={getItemSize}
width={width}
>
{Row}
</VariableSizeList>
)}
</AutoSizer>
)
有没有解决这个问题的方法?