2017-05-05 12 views
1

react-virtualizeライブラリのInfiniteLoaderを使用して、リスト項目をフィルタリングするために入力フィールドがtextSearchのスクロール可能なリストを表示しようとしています。InfiniteLoaderをリセット/初期化する正しい方法

私が使用するコードは、InfiniteLoader Sample Codeに非常に近いです。 リストはうまくいきますが、searchTextが変更され、(完全に)新しいデータが表示されるべきときに、InfiniteLoaderをリセット/初期化する方法がわかりません。

流れはこのようなものです:

  1. リストが初めて開かれ、redux store(正常に動作します)からのデータを示しています。
  2. ユーザーがtextSearch変更し、新しいデータが
  3. InfiniteLoaderで初めてと再レンダリングのためのようなloadMoreRowsを呼び出す必要があります(私はInfiniteLoaderresetLoadMoreRowsCacheを呼び出してみました)、InfiniteLoaderが初期化されるべきで、この時点でstore
  4. に取り込まれ、新しいデータ

私はINFINITELOADER DEMOは同じ動作を持っていることを見てきました:私はリストをscolling開始するまで何も起こりません「キャッシュされたデータをフラッシュします」をクリックして。

だから私の質問:リセット/初期化する正しい方法は何ですか?

答えて

0

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を投稿するハッピー。

+0

ご迷惑をおかけして申し訳ありません。あなたの提案と 'list'の' recomputeRowHeights'メソッドの呼び出しを組み合わせて行いました。再度、感謝します – PeteMeier

関連する問題