【发布时间】:2017-04-20 04:27:49
【问题描述】:
当我尝试按如下方式呈现项目列表时遇到问题:
render()
{
const data = (my data);
const cellRenderer = ({index, key}) => (
<li key={key}>
<Datum data={data[index]} />
</li>
);
return (
<AutoSizer>
{
({ width, height }) => (
<CellMeasurer cellRenderer={ cellRenderer }
columnCount={ 1 }
width={ width }
rowCount={ transactions.length }>
{
({ getRowHeight }) => (
<List height={ height }
overscanRowCount={ 50 }
noRowsRenderer={ () => (<div> Nix! </div>) }
rowCount={ transactions.length }
rowHeight={ getRowHeight }
rowRenderer={ cellRenderer }
width={ width } />
)
}
</CellMeasurer>
)
}
</AutoSizer>
);
}
现在,当我向下滚动时,它会每隔一秒跳过一个列表项,直到我看到一半的页面为空但仍可滚动。
向上滚动时更糟糕的是,它会跳过一半的页面。
AutoSizer和CellMeasurer 似乎工作正常。我稍微浏览了一下代码,看起来它们确实创建了正确的测量值。
我的数据只是一个静态对象数组。不是承诺或流。
我还更改了我的 Datum 组件几次,以确保它完全是静态标记,但这并没有改变任何东西。
有什么想法吗?
[编辑]
这是一个显示我的问题的 Plunker:https://plnkr.co/edit/2YJnAt?p=preview
具有讽刺意味的是,在摆弄它时,我意外地发现了我做错了什么。我会用我的解决方案提交答案。
【问题讨论】:
-
一个codepen会帮助你得到更多的答案
-
将
style传递给您的rowRenderer可能会清除github.com/bvaughn/react-virtualized/blob/master/docs/…
标签: javascript reactjs react-virtualized