2017-02-15 6 views
0

私はReact VirtualizedのInfiniteLoaderGridコンポーネントから無限スクロールコンポーネントを構築しました。私のマウスホイールを使用してスクロールすると(つまり、合理的にゆっくりと)すべてがうまく動作します。しかし、コンポーネント内のスクロールバーをクリックしてドラッグすると(はるかに速く動く)、決して底には置かない。代わりに、スクロールバーの途中のある割合をスクロールした後、突然上にジャンプします。仮想化されたInfiniteLoader/Gridへの対応:スクロールリセットを防止するにはどうすればよいですか?

私はGridconsole.log文を追加しようとしましたが、彼らが示すすべてのevent.target.scrollTopは、次の0に本当に高いナンバーワン瞬間から行くことです。なぜ私が理解できないのは、event.target.scrollTopが突然0になる理由です。私がブラウザで行ったことは、マウスを(左クリックボタンを押したまま)動かすことです。

この問題をどのように修正することができますか?

+1

私たちは、DataGrid製品の開発中に何か似たようなものに遭遇しました - http://reactdatagrid.com - 私たちのためには、コード内に何かの結果がありました - イベントハンドラに条件付きブレークポイントを入れてください0と呼び出しスタックを見て - それは役立つ可能性があります。 –

答えて

0

これはユーザーエラーであることが判明しました。

InfiniteLoaderGridはいずれもrowCountとなりますが、この2つは非常に異なる値です。 InfiniteLoadernumItemsrowCountを期待するが、Gridはをとる。両方ともInfiniteLoaderバージョンを使用して別の問題を修正しましたが、本当に必要なのは、異なる値を渡すことでした。

これを見つけて2つを別々の値に設定すると、奇妙なスクロールのリセットがなくなりました。しかし、React Virtualizedソースコードをかなりの時間にわたって流し込んでいるにもかかわらず、rowCountが超過したときに、scrollTop0のターゲットでイベントが発生する場所はまだ分かりません。しかたがない。

+0

両方とも同じ 'rowCount'値を渡すことができます。あなたの 'cellRenderer'は、アンロードされた行(ローカルロードされたリストサイズを超えるインデックスを意味します)を処理するだけです。 – brianvaughn

関連する問題