React.Childrenの詳しい使い方

React.Childrenの詳しい使い方

React.Children は、 this.props.children の囲まれたデータ構造を操作するための便利なツールを提供するトップレベル API の 1 つです。

this.props オブジェクトのプロパティは、コンポーネントのプロパティと 1 対 1 で対応していますが、this.props.children プロパティは例外です。コンポーネントのすべての子ノードを表します。

1. React.Children.map

オブジェクト React.Children.map(オブジェクト children, 関数 fn [, オブジェクト context])
 
方向:
React.Children.map(this.props.children, 関数(child) {
  <li>{child} を返します。
})
その他のメソッド this.props.children.forEach(function (child) {
  <li>{child} を返します。
})

コンテキストを参照する this を使用して、各直接の子 (children パラメータに含まれる) に対して fn 関数を呼び出します。 children がネストされたオブジェクトまたは配列である場合、反復処理されます。コンテナ オブジェクトは fn に渡されません。 children パラメータが null または undefined の場合、空のオブジェクトの代わりに null または undefined が返されます。

<script type="text/jsx">
 var NotesList = React.createClass({
  レンダリング: 関数() {
   戻る (
    <オル>
     {
      React.Children.map(this.props.children, 関数(child) {
          <li>{child} を返します。
        })
     }
    </ol>
   );
  }
 });
 
 React.render() で
  <メモリスト>
   <span>こんにちは</span>
   <span>こんにちは</span>
  </NotesList>,
  文書本体
 );
</スクリプト>

ここで、 this.props.childrenには 3 つの値があることに注意してください。現在のコンポーネントに子ノードがない場合、 undefinedなります。子ノードが 1 つある場合、データ型はobjectになります。子ノードが複数ある場合、データ型はarrayになります。したがって、 this.props.childrenを扱うときは注意してください。

Reactthis.props.childrenを処理するためのユーティリティ メソッドReact.Childrenを提供します。 React.Children.mapを使用すると、 this.props.childrenのデータ型がundefinedobjectかを気にせずに、子ノードを反復処理できます。

次の ReactElement を渡します。

<メモリスト>
  <span>こんにちは</span>
  <span>こんにちは</span>
</NotesList>
// 2 つの子ノードを返します <NotesList></NotesList>
//未定義を返す
 
 
<NotesList> なし</NotesList>
//nullを返す

2. React.Children.forEach

React.Children.forEach(オブジェクト children, 関数 fn [, オブジェクト context])

React.Children.map() に似ていますが、オブジェクトを返しません。

3. React.Children.count

数値 React.Children.count(オブジェクト children)

子のコンポーネントの合計数を返します。これは、map または forEach に渡されたコールバック関数の呼び出し回数に対応します。

レンダリング: 関数() {
  console.log(React.Children.count(this.props.children)); //2
 
  戻る (
   <オル>
    {
     this.props.children.forEach(関数 (child) {
       <li>{child} を返します。
     })
    }
   </ol>
  );
 }

さまざまな ReactElements 出力カウント値:

<メモリスト>
  <span>こんにちは</span>
  <span>こんにちは</span>
</NotesList>
console.log(React.Children.count(this.props.children)); //2
 
<ノートリスト></ノートリスト>
console.log(React.Children.count(this.props.children)); //0
 
<NotesList> なし</NotesList>
console.log(React.Children.count(this.props.children)); //1

4. 子どものみに反応する

オブジェクト React.Children.only(オブジェクト children)

children 内の唯一の子を返します。それ以外の場合は例外をスローします。

ここでの唯一の子である only メソッドは、複数のオブジェクト (配列) ではなく、単一のオブジェクトのみをパラメーターとして受け入れることができます。

コンソールにログ出力します。 
//出力オブジェクト this.props.children[0]

以上がReact.Childrenの使い方を詳しく解説した内容です。React.Childrenの使い方についてさらに詳しく知りたい方は、123WORDPRESS.COM内の他の関連記事もぜひご覧ください!

以下もご興味があるかもしれません:
  • React Hooksの使用例
  • React Native の基本原則の深い理解 (Bridge of React Native)
  • React+Koa によるファイルアップロードの実装例
  • Reactフックとzarmコンポーネントライブラリ構成に基づいてh5フォームページを開発するためのサンプルコード
  • React antd タブの切り替えによりサブコンポーネントが繰り返し更新される
  • ReactJs 基礎チュートリアル - 基本編
  • ReactRouterの実装
  • React.cloneElement の使い方の詳しい説明

<<:  vsftpd ユーザーが ssh 経由でログインすることを禁止する方法

>>:  Docker に nginx をインストールし、https 経由でアクセスを構成する方法

推薦する

MySQL の結合フィールドの Concat()

目次1. はじめに2. 本文2.1 フィールドの連結2.2 フィールドでの算術計算の実行1. はじめ...

MySQL での %% のようなファジークエリの実装

1、%: 0 個以上の任意の文字を表します。あらゆるタイプと長さの文字に一致します。場合によっては、...

デザイン理論:計画、リソース、コミュニケーションの問題について

<br />多くの中小企業ではこの問題は発生しません。中小企業はデザイナーをサポートし、...

JSはUUIDとNanoIDというユニークなIDメソッドを生成します

目次1. NanoIDがUUIDに取って代わる理由2. jsを生成する方法3. ナノID方式序文:ユ...

sbinディレクトリを生成せずにNginxをインストールするソリューション

エラーの説明: 1. Linux (CentOS 7 64) システムに Nginx (1.18.0...

Linux でメモリ使用量を確認する方法

システムの問題、アプリケーションの速度低下、または原因不明の問題をトラブルシューティングする場合、最...

HTML から PDF への変換事例の概要 (複数の画像を推奨)

仕事の都合上、最近 HTML を PDF に変換する機能について調べることに時間を費やしました。 H...

Kali Linux システムのバージョンを確認する方法

1. Kali Linuxシステムのバージョンを確認するコマンド: cat /etc/issue 2...

Nginxはhttpとhttpsの両方のアクセスをサポートするために同じドメイン名を設定します

Nginx は同じドメイン名で構成されており、http と https の両方でアクセスできます。証...

Squid を使用して http および https 用のプロキシ サーバーを構築する方法

nginx を導入した際に、フォワードプロキシの設定も nginx を使っていました。しかし、htt...

MySQLのスリープ関数の特殊現象例の詳しい説明

序文MySQL のスリープ システム機能は、実用的な適用シナリオが少なく、通常は実験的なテストに使用...

DockerとFastDFSのインストールコマンドと使い方の詳しい説明

Dockerの機能1) すぐに始められるユーザーがプログラムを「Docker 化」するには、わずか数...

MySQL の replace と replace into の詳細な例 into_Mysql

MySQL の replace と replace into はどちらも頻繁に使用される関数です。...

MySQL グラフィカル管理ツール Navicat のインストール手順

目次序文1. 全員にインストールパッケージを用意する2. Navicatをインストールし、Navic...

Linuxでホスト名を永続的に変更する方法

ホスト名を変更する場合は、以下の手順に従ってください。ホスト名の使用hostnameコマンドを使用す...