ホームページ ウェブフロントエンド jsチュートリアル コンポーネントに反応するためにどのようなパフォーマンスの最適化が行われましたか?

コンポーネントに反応するためにどのようなパフォーマンスの最適化が行われましたか?

Nov 19, 2020 pm 05:55 PM
react

React コンポーネントのパフォーマンスの最適化には、次のものが含まれます: 1. コンポーネントを構築するためにできるだけ多くのステートレス関数を使用する; 2. コンポーネントをサブコンポーネントに分割して、コンポーネントをよりきめ細かく制御できるようにする; 3. PureRender を使用して変更を処理する最小限のレンダリングを生成します。 4. 不変を使用します。

コンポーネントに反応するためにどのようなパフォーマンスの最適化が行われましたか?

React コンポーネントのパフォーマンスの最適化には次のものが含まれます:

1. 可能な限りステートレス性を使用します。コンポーネントを構築する関数

ステートレス コンポーネントには、props と context という 2 つのパラメータしかありません。ステートもライフサイクル メソッドも持たず、コンポーネント自体がステートフル コンポーネント構築メソッドのレンダリング メソッドになります。

ステートレス コンポーネントは、必要に応じて使用する必要があります。ステートレス コンポーネントは、React.createClass や ES6 クラスのように呼び出し時に新しいインスタンスを作成せず、作成時に常にインスタンスを維持するため、不要なチェックやメモリ割り当てを回避し、内部の最適化を実現します。

2. コンポーネントをサブコンポーネントに分割し、コンポーネントをよりきめ細かく制御できるようにする

関連する重要な概念: Pure function

Pure関数 3 つの主要原則:

同じ入力が与えられると、常に同じ出力が返されます: たとえば、反例には Math.random()、New Date() が含まれます

このプロセスには副作用はありません: つまり、外部状態を変更することはできません。

追加の状態依存関係はありません。つまり、メソッド内部の状態はメソッドのライフサイクル内でのみ存続できます。つまり、メソッド内で共有変数を使用することはできません。その方法。

純粋関数はメソッドレベルのテストやリファクタリングに非常に便利で、プログラムの拡張性と適応性を高めることができます。純粋関数は関数式の基礎です。

React コンポーネント自体は純粋な関数です。つまり、指定された props を渡して特定の Virtual DOM を取得するものであり、プロセス全体は予測可能です。

具体的な方法

コンポーネントをよりきめ細かく制御できるように、コンポーネントをサブコンポーネントに分割します。純粋な状態を維持すると、メソッドやコンポーネントがより集中し、より小さく、より独立し、より再利用可能でテストしやすくなります。

3. PureRender を使用して変更のレンダリングを最小限に抑える

関連する重要な概念: PureRender

PureRender の純粋性たとえば、純粋な関数の条件が満たされている、つまり、同じプロパティと状態でレンダリングされたコンポーネントは同じ結果を取得します。

React で PureRender を実装するには、 shouldComponentUpdate ライフサイクル メソッドを再実装する必要があります。 shouldComponentUpdate は、更新する必要がある props と state を受け取る特別なメソッドであり、その本質は正しいコンポーネントのレンダリングを実行することです。 false を返すと、ライフサイクル メソッドは下方向に実行されなくなり、true を返すと、下方向に実行が継続されます。

コンポーネントは、初期化プロセス中にツリー構造をレンダリングします。親ノードのプロパティが変更されると、理想的には、1 つのリンク上の変更されたプロパティに関連するノードのみがレンダリングされます。ただし、デフォルトでは、 shouldComponentUpdateメソッドが true を返すと、React はすべてのノードを再レンダリングします。

ShouldComponentUpdate の書き換えを実装する公式プラグインがいくつかあり、PureRender を使用するためにコードの最適化を行うこともできます。

具体的な方法

(1) PureRenderを利用する

公式プラグインreact-addons-pure-render-mixinを利用して##を実装します#ShouldComponentUpdateRewriting

import React from 'react';
import PureRenderMixin from 'react-addons-pure-render-mixin';
class App extends React.Component {
  constructor(props) {
    super(props);
    this.shouldComponentUpdate = PureRenderMixin.shouldComponentUpdate.bind(this);
  }
  render() {
    return <div className={this.props.className}>foo</div>
  }
}
ログイン後にコピー

その原則は、オブジェクト (プロパティと状態を含む) の浅い比較、つまり参照比較、非値比較を行うことです。たとえば、詳細な比較を行わなくても、各プロパティが一致するかどうか (プロパティがオブジェクトの場合はアドレスのみが比較され、アドレスは同じ) に注意するだけで済みます。

(2)

PureRender

を最適化する

ShouldComponentUpdate をトリガーして、何があっても true を返すようなコードの記述は避けてください。

prop にリテラル配列やオブジェクトを直接設定することは避けてください。

渡される配列やオブジェクトの値が毎回変更されない場合でも、それらのアドレスも変更されます。

次の記述メソッドは、レンダリング時にスタイルが新しいオブジェクトになるたびに shouldComponentUpdate を true にトリガーします:

<Account style={{color: &#39;black&#39;}} />
ログイン後にコピー

改善方法: リテラルを参照に設定します:

const defaultStyle = {};
<Account style={this.props.style || defaultStyle} />
ログイン後にコピー

毎回イベントをバインドしないでください

このようにイベントをバインドすると、毎回新しい

onChange 属性値が生成されます:

render() {
  return <input onChange={this.handleChange.bind(this)} />
}
ログイン後にコピー

これはコンストラクター内にある必要があります。可能な限りバインディング。バインディングでパラメーターを渡す必要がある場合は、サブコンポーネントを抽象化するか、既存のデータ構造を変更することを検討する必要があります。

constructor(props) {
  super(props);
  this.handleChange = this.handleChange.bind(this);
}
handleChange() {
  ...
}
render() {
  return <input onChange={this.handleChange} />
}
ログイン後にコピー

サブコンポーネントを設定するときは、親コンポーネント レベルでオーバーライドします。

shouldComponentUpdate

4. 不変を使用する

JavaScript のオブジェクトは一般に変更可能です。参照割り当てが使用されるため、新しいオブジェクトへの変更は元のオブジェクトに影響します。この問題を解決するためにディープコピーやシャローコピーが使用されますが、CPUやメモリの無駄が発生します。

不変データは、この問題をうまく解決します。

不変データとは、一度作成されると変更できないデータです。 Immutable オブジェクトを変更、追加、または削除すると、新しい Immutable オブジェクトが返されます。不変実装の原則は、永続的なデータ構造です。つまり、古いデータを使用して新しいデータを作成する場合、古いデータと新しいデータは同時に利用可能であり、変更されていないことが保証されます。同時に、ディープ コピーによるパフォーマンスの低下を避けるために、Immutable は構造共有を使用します。つまり、オブジェクト ツリー内のノードが変更された場合、このノードとその影響を受ける親ノードのみが変更され、他のノードは変更されます。共有されています。

関連する学習の推奨事項: JavaScript 学習チュートリアル

以上がコンポーネントに反応するためにどのようなパフォーマンスの最適化が行われましたか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

React と WebSocket を使用してリアルタイム チャット アプリを構築する方法 React と WebSocket を使用してリアルタイム チャット アプリを構築する方法 Sep 26, 2023 pm 07:46 PM

React と WebSocket を使用してリアルタイム チャット アプリケーションを構築する方法 はじめに: インターネットの急速な発展に伴い、リアルタイム コミュニケーションがますます注目を集めています。ライブチャット アプリは、現代の社会生活や仕事生活に不可欠な部分になっています。この記事では、React と WebSocket を使用して簡単なリアルタイム チャット アプリケーションを構築する方法と、具体的なコード例を紹介します。 1. 技術的な準備 リアルタイム チャット アプリケーションの構築を開始する前に、次のテクノロジとツールを準備する必要があります。 React: 構築用の 1 つ

React フロントエンドとバックエンドの分離ガイド: フロントエンドとバックエンドの分離と独立したデプロイメントを実現する方法 React フロントエンドとバックエンドの分離ガイド: フロントエンドとバックエンドの分離と独立したデプロイメントを実現する方法 Sep 28, 2023 am 10:48 AM

React フロントエンドとバックエンドの分離ガイド: フロントエンドとバックエンドの分離と独立したデプロイメントを実現する方法、特定のコード例が必要です 今日の Web 開発環境では、フロントエンドとバックエンドの分離がトレンドになっています。フロントエンド コードとバックエンド コードを分離することで、開発作業がより柔軟かつ効率的になり、チームのコラボレーションが促進されます。この記事では、React を使用してフロントエンドとバックエンドの分離を実現し、それによって分離と独立したデプロイの目標を達成する方法を紹介します。まず、フロントエンドとバックエンドの分離とは何かを理解する必要があります。従来の Web 開発モデルでは、フロントエンドとバックエンドが結合されています。

React と Flask を使用してシンプルで使いやすい Web アプリケーションを構築する方法 React と Flask を使用してシンプルで使いやすい Web アプリケーションを構築する方法 Sep 27, 2023 am 11:09 AM

React と Flask を使用してシンプルで使いやすい Web アプリケーションを構築する方法 はじめに: インターネットの発展に伴い、Web アプリケーションのニーズはますます多様化および複雑化しています。使いやすさとパフォーマンスに対するユーザーの要件を満たすために、最新のテクノロジー スタックを使用してネットワーク アプリケーションを構築することがますます重要になっています。 React と Flask は、フロントエンドおよびバックエンド開発用の 2 つの非常に人気のあるフレームワークであり、うまく連携してシンプルで使いやすい Web アプリケーションを構築します。この記事では、React と Flask を活用する方法について詳しく説明します。

React と RabbitMQ を使用して信頼性の高いメッセージング アプリを構築する方法 React と RabbitMQ を使用して信頼性の高いメッセージング アプリを構築する方法 Sep 28, 2023 pm 08:24 PM

React と RabbitMQ を使用して信頼性の高いメッセージング アプリケーションを構築する方法 はじめに: 最新のアプリケーションは、リアルタイム更新やデータ同期などの機能を実現するために、信頼性の高いメッセージングをサポートする必要があります。 React はユーザー インターフェイスを構築するための人気のある JavaScript ライブラリであり、RabbitMQ は信頼性の高いメッセージング ミドルウェアです。この記事では、React と RabbitMQ を組み合わせて信頼性の高いメッセージング アプリケーションを構築する方法を紹介し、具体的なコード例を示します。 RabbitMQ の概要:

React レスポンシブ デザイン ガイド: アダプティブ フロントエンド レイアウト効果を実現する方法 React レスポンシブ デザイン ガイド: アダプティブ フロントエンド レイアウト効果を実現する方法 Sep 26, 2023 am 11:34 AM

React レスポンシブ デザイン ガイド: アダプティブ フロントエンド レイアウト効果を実現する方法 モバイル デバイスの人気と、マルチスクリーン エクスペリエンスに対するユーザーの需要の高まりに伴い、レスポンシブ デザインは最新のフロントエンド開発における重要な考慮事項の 1 つとなっています。 React は、現在最も人気のあるフロントエンド フレームワークの 1 つであり、開発者がアダプティブ レイアウト効果を実現するのに役立つ豊富なツールとコンポーネントを提供します。この記事では、React を使用してレスポンシブ デザインを実装するためのガイドラインとヒントをいくつか紹介し、参考として具体的なコード例を示します。 Reactを使用したファイル

React コード デバッグ ガイド: フロントエンドのバグをすばやく見つけて解決する方法 React コード デバッグ ガイド: フロントエンドのバグをすばやく見つけて解決する方法 Sep 26, 2023 pm 02:25 PM

React コード デバッグ ガイド: フロントエンドのバグをすばやく見つけて解決する方法 はじめに: React アプリケーションを開発するとき、アプリケーションをクラッシュさせたり、不正な動作を引き起こしたりする可能性のあるさまざまなバグに遭遇することがよくあります。したがって、デバッグ スキルを習得することは、すべての React 開発者にとって不可欠な能力です。この記事では、フロントエンドのバグを見つけて解決するための実践的なテクニックをいくつか紹介し、読者が React アプリケーションのバグをすばやく見つけて解決できるようにする具体的なコード例を示します。 1. デバッグツールの選択: In Re

React Router ユーザーガイド: フロントエンドルーティング制御の実装方法 React Router ユーザーガイド: フロントエンドルーティング制御の実装方法 Sep 29, 2023 pm 05:45 PM

ReactRouter ユーザーガイド: フロントエンドルーティング制御の実装方法 シングルページアプリケーションの人気に伴い、フロントエンドルーティングは無視できない重要な部分になりました。 React エコシステムで最も人気のあるルーティング ライブラリとして、ReactRouter は豊富な機能と使いやすい API を提供し、フロントエンド ルーティングの実装を非常にシンプルかつ柔軟にします。この記事では、ReactRouter の使用方法と具体的なコード例を紹介します。 ReactRouter を最初にインストールするには、次のものが必要です

React と Google BigQuery を使用して高速データ分析アプリケーションを構築する方法 React と Google BigQuery を使用して高速データ分析アプリケーションを構築する方法 Sep 26, 2023 pm 06:12 PM

React と Google BigQuery を使用して高速データ分析アプリケーションを構築する方法 はじめに: 今日の情報爆発の時代において、データ分析はさまざまな業界で不可欠なリンクとなっています。中でも、高速かつ効率的なデータ分析アプリケーションを構築することは、多くの企業や個人が追求する目標となっています。この記事では、React と Google BigQuery を使用して高速データ分析アプリケーションを構築する方法を紹介し、詳細なコード例を示します。 1. 概要 React はビルドするためのツールです

See all articles