機能をリクエストしバグを報告しますか?
どちらでもない/バグ
現在の動作は何ですか?
クラスコンポーネントを(フックを使用して)関数コンポーネントに移行しているときに、パフォーマンスがことに気付きました。 ツリー構造の一部であるコンポーネント( TreeNodeComponent
と呼ばれる)があります。 ツリーのサイズによっては、何百ものインスタンスが表示される場合があります。
関数コンポーネントをPureComponentでラップすると、観察される「レンダリング時間」が大幅に短縮されました。 (〜160msから〜60ms)
アプリは、これらのTreeNodeComponent
をtree-structure
レンダリングします。 親が更新されると、すべての直接の子を調整する必要があります。
プロジェクト: https :
期待される動作は何ですか?
機能コンポーネントとクラスコンポーネント間の同等のパフォーマンス。
Reactのどのバージョン、およびどのブラウザ/ OSがこの問題の影響を受けますか?
OSX
クロム73 /エレクトロン5.0.5
React 16.8
Typescript&Webpack
関数コンポーネントをPureComponentでラップすると、観察される「レンダリング時間」が大幅に短縮されました。 (〜160msから〜60ms)
TreeNodeComponent
レンダリングにReact.PureComponent
早期にベイルアウトします。
クラスコンポーネントを(フック付きの)関数コンポーネントに移行しているときに、パフォーマンスが大幅に低下していることに気付きました。
React.Component
を拡張するクラスから関数コンポーネントに移行すると、パフォーマンスが低下したと言っていますか? または、すでにReact.PureComponent
(またはshouldComponentUpdate
)を使用していましたか
React.memo
を使用して、関数コンポーネントで同じベイルアウトセマンティクスを取得できます。
React.Component
からshouldComponentUpdate
に移行しました。
「レンダリング」を避けるためにReact.useMemo
を使用します。
React.memo
は、 PureComponent
結果と同じくらい良い結果をもたらします。 (〜50-60ms)
明確にしてくれてありがとう。
機能コンポーネントとクラスコンポーネントのどちらがパフォーマンスが優れているのかわかりませんでした。 長いリストには何を使うべきですか
最も参考になるコメント
TreeNodeComponent
レンダリングにReact.PureComponent
早期にベイルアウトします。React.Component
を拡張するクラスから関数コンポーネントに移行すると、パフォーマンスが低下したと言っていますか? または、すでにReact.PureComponent
(またはshouldComponentUpdate
)を使用していましたかReact.memo
を使用して、関数コンポーネントで同じベイルアウトセマンティクスを取得できます。