2017-10-12 13 views
2

多くのデータを処理する必要があるReactアプリケーションがあります。キャッチが検索されているものに応じて、ある...テーブルには、する必要がありますいくつかのリンク 多くのデータを状態で処理するReactJS

  • 検索バー
    • ヘッダー:総合それは単純なアプリケーションです約1,000行×約100列を表示します。 httpリクエストがこのデータを返して状態をセットすると、アプリケーションはほとんど使用できなくなります。そのデータが格納された後に状態を更新しようとすると、ブラウザが永久に破棄されるか、クラッシュします。 20行×100列を表示するようにテーブルを制限しても、状態の更新は大幅に高速ですが、更新するのが目立ちます。

      私は良い解決策を見つけるためにウェブを精練してしまい、短くなってしまったので、アイデアや助けを歓迎します。もしreduxが助けになるならば、私はそれを実装するのに何の問題もなく、報酬がなければ時間を無駄にしたくない。

    +0

    レンダリングが減速しているようです。私は自分で使っていませんが、https://bvaughn.github.io/react-virtualized/#/components/Listには1000行+で一貫したパフォーマンスがあります。この例では最小限の列しかありません。しかし、可視の行を計算してレンダリングするのと同じように、可視の列を計算してレンダリングすることもできます。 – jmathew

    +0

    私は現在、テーブルにhttps://react-table.js.org/#/story/100k-rows-w-pivoting-sub-componentsを使用しています。テーブル自体はレンダリングに問題ありませんが、データがstate/domに入った後に検索バー(状態onChangeを更新)に入力しようとすると、入力が永久に変更されます(状態の更新) – erichardson30

    +0

    コンポーネントのいくつかのコード?特にrender()とネットワークコールを表示していますか? – jmathew

    答えて

    2

    入力するたびに検索バーとともにテーブル全体が再描画されることがあります。テーブルをサブコンポーネントに入れて、shouldComponentUpdate()を実装してみてください。文字を入力に入力するたびにテーブルデータが動的に更新されるはずですか?それは高価かもしれませんが、ユーザーが入力によって「検索」ボタンをクリックしたときにのみテーブルを再レンダリングすることも考えられます。

    レンダリングの問題であるかどうかを判断しようとしているブッシュの周りを叩くのではなく、React performance tools *を使用することをおすすめします。ベンチリングにはa solid blog postがありますが、これはReactでのパフォーマンスデバッグのプロセスを辿っていますが、魔法はPerf.printWasted()です。レンダリング後のコンポーネントの再レンダリングに費やされた時間(たとえば、テキスト入力のみを変更しているテーブル)を表示します。テスト手順:コンソールから

    1. は、実行:Perf.start()
    2. タイプをご入力して、
    3. 理想的に一つだけのキーストロークコンソール: Perf.stop()
    4. コンソール:Perf.printWasted()

    このメソッドは、スーパーです痛みはありませんが、同じ情報を知るためにuse the Chrome profiling toolsもできます。

    *私はちょうどホット・オフザ・ザ・プレスのリアクション16で非難されていることを知りましたが、あなたはまだよく動作する15.x変種を使用している可能性が高いです。

    また、反応仮想化のための+1!それは優れており、多くの列とレイアウトをサポートしています。

    1

    私が正しく理解していれば、問題はデータ量ではなく、DOMレンダリングの問題です。

    私はあなたにとって最良の解決策は、テーブルの可視部分だけをレンダリングすることだと思います。たとえば、this libraryなどを使用してみてください。

    +0

    私は現在、テーブルにhttps://react-table.js.org/#/story/100k-rows-w-pivoting-sub-componentsを使用しています。しかし、テーブル自体はレンダリングに問題はありませんが、データがState/Domに入った後に検索バー(状態onChangeを更新する)に入力しようとすると、入力が永久に変わります(状態更新) – erichardson30

    +0

    わかりませんが、この問題https://github.com/react-tools/react-table/issues/403には、 'react-virtualized'の' AutoSizer'コンポーネントで 'react-table'をどのように使うかの例があります。 – uselesssmile

    関連する問題