反应虚拟化的AutoSizer重新呈现问题

时间:2018-09-28 11:16:16

标签: javascript reactjs react-virtualized

我正在使用react virtualized创建一个虚拟列表组件:

https://codesandbox.io/s/026kyjnjw(工作正常)(Autosizer将render prop作为内联函数)

https://codesandbox.io/s/ql123vqmw4(破碎)(Autosizer将渲染道具作为实例方法)

我所做的唯一更改是将render prop子代对象移动为一个实例函数,这样就不会在每个渲染器上都重新创建它。但是,这种更改会带来意想不到的结果,即在items属性更改时不更新列表。查看Autosizer组件源,我发现它是一个React.PureComponent。您不认为它应该是简单的React.Component吗?因为它不直接获取项目列表(实际上以最常用的形式,它根本不需要任何支持),所以它由rowRenderer支持。因此,如果列表发生更改,它就不会重新呈现,因为它是React.PureComponent,并且使其重新呈现的唯一方法是使子级以内联方式呈现道具,这似乎有些hacker。

0 个答案:

没有答案