javascript - 如何重置 react-virtualized 包中的 Infinite Loader?
问题描述
重新渲染InfiniteLoader
包含List
和AutoSizer
组件的组件的正确方法是什么。它的工作原理是在我们Child.js
组件的父组件中,当用户单击父组件中的特定按钮时,我希望整个子组件重新呈现InfiniteLoader
它包含的内容。例如,子组件Child.js
将包含InfiniteLoader
它的render()
方法并清除所有行,以便可以重新填充新数据。是否与事先清除 InfiniteLoader 的缓存有关?InfiniteLoader 的示例及其设置方式如下所示。
state = {
listOfResults: [],
apiPage: 1,
nextPageLoading: false,
};
cache = new CellMeasurerCache({
defaultHeight: 200,
fixedWidth: true,
});
setListRef = ref => {
this._list = ref;
this.registerList(ref);
};
render() {
return (
<div className='infinite-loader-container'>
<InfiniteLoader
isRowLoaded={this.isRowLoaded}
loadMoreRows={loadMoreRows}
rowCount={this.state.listOfResults.length}
ref={ref => (this.infiniteLoaderRef = ref)}
>
{({onRowsRendered, registerChild}) => {
this.registerList = registerChild;
return (
<div className='full-text-search-list-container'>
<AutoSizer>
{({height, width}) => {
return(
<List
rowHeight={this.cache.rowHeight}
rowCount={this.state.listOfResults.length}
overscanRowCount={5}
ref={this.setListRef}
deferredMeasurementCache={this.cache}
onRowsRendered={onRowsRendered}
height={height}
width={width}
rowRenderer={this.rowRenderer}
/>
);
}}
</AutoSizer>
</div>
);
}}
</InfiniteLoader>
</div>
)
}
解决方案
推荐阅读
- php - 将服务注入 EntityRepository 是个好主意吗?
- javascript - 如何在提交时处理 q-input / preventDefault 中的“输入”?
- java - 带有JDK11的maven:javac:无效标志:--release
- c# - 在 C# 中强制实现可全局访问的类
- python - Python SyntaxError:无效语法 [elif my_move == 'rock']
- linux - 为什么 mremap 只访问 4096 字节内存?
- python - 'DataFrame' 对象没有属性 'Hight'
- c++11 - 在 Qt 中显示非常量字符串(错误消息)
- android - 是否可以将文件添加到 /data/data 中的 Android 应用程序文件夹?
- uwp - 模板化 ItemsControl 弹出窗口中的 ItemsPresenter 在第一次显示时仅显示 1 个项目,在第二次显示时加载所有内容