重置/初始化 InfiniteLoader 的正确方法是什么

What's the right way to reset / initialize InfiniteLoader

我正在尝试使用 react-virtualize 库中的 InfiniteLoader 来显示顶部有一个 textSearch 输入字段(用于过滤列表条目)的可滚动列表。

我使用的代码非常接近InfiniteLoader Sample Code。 该列表工作正常,但我不确定如何在 searchText 更改时 reset/initialize InfiniteLoader 并且应显示(完全)新数据。

流程是这样的:

  1. 列表是第一次打开并显示来自 redux store 的数据(工作正常)。
  2. 用户更改 textSearch 并且新数据被提取到 store
  3. 此时,InfiniteLoader 应该被初始化(我尝试在 InfiniteLoader 上调用 resetLoadMoreRowsCache
  4. InfiniteLoader 应该像第一次调用 loadMoreRows 并使用新数据重新渲染

我已经看到 INFINITELOADER DEMO 具有相同的行为:通过单击 'Flush Cached Data' 在我开始滚动列表之前没有任何反应。

所以我的问题:reset/initialize的正确方法是什么?

对于更新版本的 InfiniteLoader

由于发布了这个问题,InfiniteLoader 获得了一个自动重新加载数据的参数。您现在可以使用:

infiniteLoaderRef.resetLoadMoreRowsCache(true);

自动刷新缓存并获取新行。

旧版本 InfiniteLoader

InfiniteLoader 对正在呈现的一系列行作出反应。 resetLoadMoreRowsCache method 只是重置缓存数据。它不会自动请求加载一批行。

可以说应该如此。我不知道。如果应用程序状态发生变化需要调用 resetLoadMoreRowsCache,那么用户代码似乎很容易自动加载第一批新数据。

无论如何,tl;dr 是你应该能够做到这一点:

infiniteLoaderRef.resetLoadMoreRowsCache(); // Reset the cache

loadMoreRows({ // Manually kick off the first batch
  startIndex: 0,
  stopIndex: 20 // Or whatever
});

如果您认为可以改进,很高兴查看 PR 以更改默认行为。