問題タブ [react-virtualized]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - もう一度 `scrollToIndex` を使用してインデックスに戻る
(この質問は、react-virtualizedライブラリに関するものです)
<List>
複数のカテゴリのアイテムを表示するために使用するコンポーネントがあります。結果の出力は次のようになります。
「ジャンプ先」リンクを使用して、リスト内の対応するセクションの先頭までスクロールしたいと思います。いくつかスクロールすると、ジャンプ リンクをクリックするとセクションに戻ります。
「星雲」リンクを初めてクリックしたときは正常に機能しますが、その後のクリックでは何も起こりません。これはscrollToIndex
小道具であり、最初のクリック後に変化しないためだと思います。使ってみましforceUpdateGrid
たが、スクロール位置がリセットされないようです。
同じインデックスに連続してジャンプする方法はありますか?
javascript - 反応仮想化リスト内のアイテム内の反応テザーのパフォーマンスの問題
説明
react-virtualized でレンダリングされるアイテムの潜在的に長いリストがありますVirtualScroll
。
リスト内の各項目 (行) にはかなりの量の要素があり、そのうちの 1 つがコンテキスト メニューを開きます。react-tether
HTMLでそのメニューをレンダリングしてbody
(アイテムがスクロール可能なリストの下部/上部にあるときに非表示にならないように)、ユーザーがリストをスクロールしている間、メニューをアイテムに「固定」したままにしようとしています.
私の問題は、テザー メニューの位置の更新に顕著な遅延があることです。
これまでに行った手順のいくつか:
- なしで単純なリストをレンダリングしました
VirtualScroll
。テザリングされたメニューはスムーズにレンダリングされ、目立ったジャンクはありませんでした. それが私が問題があると結論付けた方法ですreact-virtualized
- ここで推奨され
rowRenderer
ているように、メニュートリガーのみに簡略化しました。 shouldComponentUpdate
行コンポーネントに実装されています。これにより、認識されるパフォーマンスが大幅に改善され、遅延が大幅に減少しましたが、それでもまだ顕著です.- Chrome devtools のタイムラインを確認しました。
Grid.js
との両方によってトリガーされるリフローが表示されtether.js
ます。
ライブラリのバージョン:
- react-virtualized v. 7.24.3 (大規模なプロジェクトであり、8.x への移行はまだ準備ができていません)
- 反応テザー v. 0.5.2
- 反応するv。15.2.1
ワーキングデモ
https://plnkr.co/edit/f7OhCoCXkDsWbyjxhR3f
スクリーンショット:
react-virtualized - React-Virtualized で適切な列フィルタリングを行う方法 - アドバイスが必要ですか?
列の並べ替えが有効になっている反応仮想化テーブルがあります。私の計画は、filter icon
列ヘッダーの隣に追加し、誰かがクリックしたときにMaterial-UI ポップオーバーを実行することです。
これが私がやったことです:私はheaderRendererを有効にしました
headerRenderer= {this.renderHeader}
私の headerRenderer はコンポーネントを返します
ColumnFilterContainer は次のとおりです。
しかし、svg-icon をクリックすると、「TEST」がコンソールに表示されますが、テーブルも再ソートされます。どうすればやりたいことを達成できますか。それは実行可能ですか?
ありがとう
reactjs - flex-wrap/inline-block スタイルのアイテム ラッピングは React Virtualized でサポートされていますか?
現在、 のようなアイテムのリストがあり<ul><li/><li/>...</ul>
、それぞれが でスタイル設定されていdisplay: inline-block
ます。アイテムの高さや幅は固定ではありませんが、おそらく固定することもできます。各アイテムにはサムネイル画像と、場合によってはテキストが含まれています。
ウィンドウの幅が変化すると、リストは応答してラップされ、水平スクロールバーはありません。たとえば、リストは 3 つの項目で始まり、すべてがウィンドウ内の行に水平に収まる場合があります。
次に、いくつかの項目が追加され、項目が 2 行目に折り返され始めます。
次に、ウィンドウの幅が変更されると、アイテムが再ラップされます。
何千ものアイテムがある場合、パフォーマンスは確実に低下する可能性があるため、リストを仮想化する方法があるかどうかを確認したかったのです。ドキュメントを読んだところ、これが現在 React Virtualized ライブラリでサポートされているようには見えませんが、確認したかったのです。コンポーネントはCollection
近いように見えますが、ウィンドウのサイズが変更されると、幅や高さが動的に変更されるとは思われません。
この種のアイテムのラッピングが可能である場合、実装例はありますか?
reactjs - 反応仮想化のスティッキーヘッダー
List
多数のアイテムをレンダリングするために、react-virtualizedのコンポーネントを使用しています。私の実装では、アイテムはセクション化されており、ユーザーが下にスクロールしても現在のセクションが表示されたままになるように、セクション ヘッダーを固定する必要があります。基本的に、スクロール位置が変更されたときにセクションヘッダーを破棄しないように反応仮想化する必要があります(ただし、他のアイテムを破棄し続けます)。これを今すぐ行う方法はありますか?あまりにもクレイジーでない限り、私はハッキングに対してオープンです。
redux - 反応仮想化されたCellMeasurerは、動的な高さを持つ接続されたコンポーネントをどのように再レンダリングできますか?
反応仮想化プロジェクトにより、非常に大きなコンポーネント リストを効率的にレンダリングできます。私のプロジェクトでは、リスト アイテムはコンテナー コンポーネント、つまり redux ストアに接続されたコンポーネントです。ID のみを知っており、コンテナー コンポーネントは、本文テキスト、日付、ユーザー名などのすべての関連データをフェッチする責任があります。
私が直面している問題は、これらのコンポーネントの高さを計算することです。React-virtualized には動的な高さを計算するためのCellMeasurer コンポーネントがありますが、CellMeasurer はコンポーネントのデフォルト状態の高さを測定します。これは私のコンテナー コンポーネントでは 0 です。最初のレンダリング時にコンテナー コンポーネントによってデータがまだフェッチされていないためです。時間。
コンテナがコンテンツをロードするときに、コンポーネントの高さを強制的に再計算する方法はありますか?
javascript - 「React-Virtualized」リストからの要素の削除または追加をアニメーション化するにはどうすればよいですか?
React-Virtualized はすぐに使用できるアニメーションをサポートしていないようですが、ReactCSSTransitionGroup
トランジションを実装するために使用することは可能ですか (そして合理的ですか?)。
私の場合、仮想化されたリストの要素でアニメーションの削除 (不透明度のフェードや高さの縮小など) トランジションを実行したいと考えています。
reactjs - 反応仮想化、SystemJS および CDN
cdnjs と SystemJS を介して Web アプリケーションで react-virtualized を使用したいと考えています。
私が見たすべての例から、react-virtualized および react ライブラリはローカルにロードされ、Webpack にバンドルされてから Web ページに含まれるようです。SystemJSでインポートするだけで、Webpackなしでcdnjs経由で使用したいと思います。しかし、それを試してみると、React が見つからないというエラーが表示されます。
誰かがこれを以前に試したことがあるかどうか、そしてこれが反応仮想化によってまったくサポートされているかどうか疑問に思っていました。ありがとう。
更新: わかりやすくするために、何をしようとしているのかを示すコードをいくつか含めました。
index.html :
main.jsx :
react-virtualized - How to use CellMeasurer correctly?
I have an interactive component inside "react-virtualized" List that acts on clicks. When the component is clicked, the cell transforms i.e. height changes.
My first version of the rowRenderer:
When the message is clicked, a text field appears. This changes the height. What however happens is that component renders over the next message.
This happens because the instance of Message is different in UI and in CellMeasurer as you can see:
The instance created by List will obviously contain correct state but CellMeasurer is not aware of this state.
I tested the following approach but I highly doubt that this is the correct way to do this? I simply cache the UI component instance myself:
This fixes this problem but probably introduces many other issues. What is the correct way to do this?
(I'm aware that using Flux/Redux/global state could fix this but I'm wondering is there some fundamental react-virtualized feature/aspect that I'm missing here.)