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 における単一テーブルと複数テーブル、およびビューと一時テーブルに対する Update と Select の違い

1. テーブルAのデータを使用してMySQLのテーブルBの内容を更新するたとえば、データ テーブル内...

Linux Autofs 自動マウント サービスのインストールと展開のチュートリアル

目次1. autofs サービスの紹介2. Autofsのインストールと展開3. Autofs効果の...

Linux で FastDFS ファイル サーバーを構築するための実装手順

目次1. ソフトウェアパッケージ2. gccをインストールする3. libfastcommonをイン...

CSS レイアウト チュートリアル: 垂直方向の中央揃えを実現する方法

序文最近、フロントエンドの知識をまとめており、いくつかのインタビューにも参加しました。インタビュー中...

CentOS で Mysql を再起動するさまざまな方法 (推奨)

1. rpm パッケージ経由でインストールされた MySQL サービスmysqldを再起動 /et...

Youku 動画から 30 秒の広告コードを削除する 2 つの方法

誰もがこんな気持ちになったことがあると思います。30 秒の広告が入った動画を見ると、とても不快に感じ...

Node.jsミドルウェアの仕組みの詳細な説明

目次Express ミドルウェアとは何ですか? Expressミドルウェアを作成するための要件Exp...

HTMLはキャンバスを使用して箇条書きスクリーン機能を実装します

導入最近、大きな課題をこなす際に、弾幕プレイヤーを作る必要がありました。他の人のソースコードを借りて...

HTML で特定のテキストを非表示にするにはどうすればよいでしょうか?

テキスト非表示コード、HTML 内の特定のテキストを非表示にするコードをコピーコードは次のとおりです...

MySQLのイベントスケジューラEVENTを理解する

MySQL のイベント スケジューラ EVENT は、Unix crontab や Windows ...

MySQL データベースの 1045 エラーの解決方法

ローカル データベースがサーバー データベースに接続されているときに発生する 1045 の問題を解決...

Docker基盤技術の適用に関する詳細な説明 名前空間Cgroup

Docker の基盤技術: Docker の基盤となる 2 つのコア テクノロジーは、名前空間とコ...

vscodeを使用してReact Native開発環境を構築する方法を教えます

質問コードにはプロンプトがありません: RN 開発に不慣れな、フロントエンド以外の学生の多くは、「ど...

セマンティックHTML構造を理解する方法

HTML と CSS は誰もが知っていると思います。HTML の構造と CSS の表現の分離も知って...

レム適応の一般的なパッケージ3つについて

序文以前、rem適応についての記事を書きましたが、具体的なパッケージは紹介しませんでした。今日は、よ...