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 経由でアクセスを構成する方法

推薦する

Vuex のモジュール化と名前空間の例のデモ

1. 目的:コードの保守が容易になり、さまざまなデータの分類が明確になります。 2. store/i...

1つの記事でJSONPの原理と応用を理解する

目次JSONPとはJSONP 原則JSONP実装1. Ajaxでクロスドメインリクエストが行われると...

spring-boot と docker-java に基づいて Docker コンテナの動的な管理と監視を実装します [完全なソース コードのダウンロード付き]

Docker入門Docker はオープンソースのアプリケーション コンテナ エンジンです。従来の仮...

MySQLトリガーについて深く理解するための記事

目次1. SC テーブルを挿入または変更するときに、テスト スコアが 0 ~ 100 の範囲外の場合...

AngularとIonicのライフサイクルとフック関数を素早く理解するための記事

目次角度成し遂げる呼び出し順序知らせイオニックionic はページのライフサイクルをどのように処理し...

overflow:hidden の役割の詳細な説明 (オーバーフローの非表示、フロートのクリア、マージンの崩壊の解決)

1. オーバーフロー:非表示 オーバーフロー非表示要素に overflow:hidden が設定さ...

HTMLのリストタグを数える

1. <dl>はリストを定義し、<dt>はリスト内の項目を定義し、<d...

ネイティブjsは9マスグリッドのドラッグアンドドロップを実現します

ネイティブJSを使用して9つの正方形のグリッドを記述し、9つのグリッドの位置をドラッグして変更する効...

ReactにおけるRefの相互利用の詳細な説明

目次1. まずRefとは何かを説明しましょう2. フックでのrefの使用1. HTMLDomフックで...

SNMP4J サーバー接続タイムアウト問題の解決策

弊社のネットワーク管理センターは管理センター兼サーバーとして機能します!各管理対象デバイスは、TCP...

単一の Nginx IP アドレスに複数の SSL 証明書を設定する例

デフォルトでは、Nginx は IP アドレスごとに 1 つの SSL 証明書のみをサポートします。...

IIS 7.5はURL書き換えモジュールを使用してWebページのリダイレクトを実現します。

Apache では構成ファイルで Web ページまたは Web サイトの書き換えを簡単に設定できる...

JSのバイナリファミリーについての簡単な説明

目次概要ブロブBlob の動作BLOB ダウンロード ファイルブロブ画像のローカル表示BLOB ファ...

VSCode の Remote-SSH を使用して Linux に接続し、リモート開発を行う

Remote-SSHをインストールして設定するまず VSCode を開き、拡張機能を見つけて、Rem...

GolangでMySQLデータベースのバックアップを実装する方法

背景Navicat は、最高の MySQL 視覚化ツールです。ただし、ビューのインポートとエクスポー...