React Fragment の紹介と詳しい使い方

React Fragment の紹介と詳しい使い方

序文

要素を DOM ツリーにバッチで追加する場合は、最初に document.createDocumentFragment を作成して、要素を DOM ツリーにバッチで追加することをお勧めします。
DocumentFragment を作成し、DocumentFragment を DOM ツリーに追加します。これにより、DOM 操作の数が減り、新しい要素が作成されなくなります。

DocumentFragment と同様に、React にも Fragment という概念があり、同様の用途があります。 React 16 より前では、Fragment は拡張パッケージ react-addons-create-fragment を通じて作成されていましたが、React 16 では、'Fragment' は <React.Fragment></React.Fragment> を通じて直接作成されます。

フラグメントの動機

一般的なパターンは、コンポーネントが子要素のリストを返すことです。次の React コード スニペットを例に挙げます。

クラスTableはReact.Componentを拡張します{
  与える() {
    戻る (
      <テーブル>
        <tr>
          <コラム />
        </tr>
      </テーブル>
    );
  }
}

レンダリングされた HTML を有効にするには、<Columns /> が複数の要素を返す必要があります。親 div が <Columns /> の render() で使用されている場合、生成された HTML は無効になります。

クラスColumnsはReact.Componentを拡張します{
  与える() {
    戻る (
      <div>
        <td>こんにちは</td>
        <td>世界</td>
      </div>
    );
  }
}

< Table /> 出力を取得します。

<テーブル>
  <tr>
    <div>
      <td>こんにちは</td>
      <td>世界</td>
    </div>
  </tr>
</テーブル>

この問題を解決するためにフラグメントが生まれました。

React Fragment の紹介と使用

React.Fragment コンポーネントを使用すると、追加の DOM 要素を作成せずに、render() メソッドから複数の要素を返すことができます。一般的なパターンは、コンポーネントが複数の要素を返すことです。フラグメントを使用すると、DOM に余分なノードを追加せずにサブリストをグループ化できます。

理解するために、コンポーネントを定義するときに、return でラップされた最も外側の div はページにレンダリングされたくないことが多いため、Fragment コンポーネントを使用する必要があります。 Vue の <template ></ template > と同じです。

与える() {
  戻る (
    <React.フラグメント>
      いくつかのテキスト。
      <h2>見出し</h2>
    </React.フラグメント>
  );
}

短縮構文 <></> を使用することもできます。

与える() {
  戻る (
    <>
      いくつかのテキスト。
      <h2>見出し</h2>
    </>
  );
}

さらに、React 16 からは render が配列を返すことをサポートしており、この機能は多くの人が知っています。この機能により、不要なノードのネストが削減されます。

'react' から React をインポートします。

エクスポートデフォルト関数(){
    戻る [
        <div>1</div>,
        <div>2</div>,
        <div>3</div>
    ];
}

<React.Fragment> と <> の違い

<></> 構文はキーや属性を受け入れることができませんが、 <React.Fragment> は受け入れることができます。

明示的な <React.Fragment> 構文を使用して宣言されたフラグメントにはキーが含まれる場合があります。 1 つの使用例は、コレクションをフラグメントの配列にマッピングすることです。たとえば、説明のリストを作成します。

関数 Glossary(props) {
  戻る (
    <ダウンロード>
      {props.items.map(item => (
        // `key` がない場合、React はキー警告を発します <React.Fragment key={item.id}>
          <dt>{item.term}</dt>
          <dd>{アイテムの説明}</dd>
        </React.フラグメント>
      ))}
    </dl>
  );
}

key はフラグメントに渡すことができる唯一の属性です。将来的には、イベントなどの他のプロパティのサポートが追加される可能性があります。

注意: 省略形 <></> は現在、一部のフロントエンド ツールでは適切にサポートされておらず、create-react-app で作成されたプロジェクトはコンパイルされない可能性があります。したがって、このような状況に遭遇するのは普通のことです。

React Fragmentの紹介と詳しい使い方については以上です。React Fragmentに関するより詳しい内容については、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

以下もご興味があるかもしれません:
  • react-redux @connect における connect デコレータの使用法の詳細な説明
  • ReactNative FlatList の使い方と落とし穴パッケージの概要
  • React Nativeはシンプルなログイン機能を実装します(推奨)
  • React Native オープンソースのタイム デート ピッカー コンポーネント (react-native-datetime) の詳細な説明
  • react-router browserHistory 更新ページの 404 問題の解決方法
  • react-router4.0を使用してリダイレクトと404機能を実装する方法
  • Reactルーティングの各バージョンのリダイレクト方法の詳細な説明
  • React ビルドのパッケージ化後とリリースの概要

<<:  ハイパーリンクを使用してリンクファイルを開く HTML 方式の紹介

>>:  フロントエンドアプリケーションのjenkins+gitlab+nginxデプロイメント

推薦する

MySQL の null (IFNULL、COALESCE、NULLIF) に関する知識ポイントのまとめ

この記事では、MySQL の null (IFNULL、COALESCE、NULLIF) に関連する...

React と Threejs を使用して VR パノラマ プロジェクトを作成する詳細なプロセス

最近、 Three.jsでReactを使用して、720 度のパノラマ写真を閲覧できるプロジェクトを構...

nginx と Tencent Cloud の無料証明書を使用して https を作成する方法

httpsを取得する方法を勉強しています。最近、Tencent Cloud が提供する無料の SSL...

HTML 5 プレビュー

<br />オリジナル: http://www.alistapart.com/artic...

nginx+php-fpm サービスの HTTP ステータス コード 502 の詳細な分析

弊社の Web プロジェクトの 1 つでは、新しい都市の増加によりトラフィックと DB 負荷が増加し...

Alibaba Cloud Ubuntu 16.04 が IPSec サービスを構築

IPSec の概要IPSec (インターネット プロトコル セキュリティ): ネットワーク層と適用さ...

Linux でのインストール中にソフトウェア パッケージの依存関係レポートに関連する問題の解決策

目次背景1) yumのkeepchche機能を有効にする: 方法1 2) yum-utils ソフト...

有名なブログの再設計例 28 件

1. Webデザイナーウォール 2. Veerleのブログ 3. チュートリアル9 4. UXブース...

JSコンストラクタとインスタンス化およびプロトタイプ導入の関係

目次1. コンストラクタとインスタンス化2. コンストラクターとインスタンス化の関係は何ですか? 3...

MySQL での r2dbc の使用に関する詳細な理解

導入MySQL は、私たちが日常業務で使用する非常に一般的なデータベースです。MySQL は現在 O...

Linux 継続的インテグレーションで Maven を自動的にインストールする方法

Mavenパッケージを解凍する tar xf apache-maven-3.5.4-bin.tar....

HTML 特殊文字変換表

キャラクター小数点文字番号エンティティ名---未使用空間---スペースバー! ! ---感嘆符「 」...

MySQL 8.0.17 のインストールと設定のグラフィックチュートリアル

この記事は、参考のためにMySQL 8.0.17のインストールと設定のグラフィックチュートリアルを記...

Tomcat コアコンポーネントとアプリケーションアーキテクチャの詳細な説明

目次Web コンテナとは何ですか? HTTP の性質HTTP リクエスト応答の例クッキーとセッション...

MySQL InnoDB row_id 境界オーバーフロー検証方法の手順

背景クラスメートと row_id の境界問題について話し合ったので、ここで詳しく説明します。 Inn...