6

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

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

流程是这样的:

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

我已经看到INFINITELOADER DEMO具有相同的行为:通过单击“刷新缓存数据”,在我开始浏览列表之前没有任何反应。

所以我的问题是:重置/初始化的正确方法是什么?

4

1 回答 1

5

对于较新版本的InfiniteLoader

自从发布此问题以来,InfiniteLoader已经获得了一个自动重新加载数据的参数。您现在可以使用:

infiniteLoaderRef.resetLoadMoreRowsCache(true);

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

对于旧版本的InfiniteLoader

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

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

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

infiniteLoaderRef.resetLoadMoreRowsCache(); // Reset the cache

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

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

于 2017-05-05T15:37:26.200 回答