Detailed usage of React.Children

Detailed usage of React.Children

React.Children is one of the top-level APIs that provides useful tools for working with the enclosed data structure of this.props.children .

The properties of the this.props object correspond one-to-one to the properties of the component, with one exception: the this.props.children property. It represents all the child nodes of the component.

1. React.Children.map

object React.Children.map(object children, function fn [, object context])
 
Directions:
React.Children.map(this.props.children, function (child) {
  return <li>{child}</li>;
})
Other methods this.props.children.forEach(function (child) {
  return <li>{child}</li>
})

Calls the fn function on each immediate child (contained in the children parameter) with this referring to the context. If children is a nested object or array, it will be iterated over: no container object will be passed to fn. If the children parameter is null or undefined, then null or undefined is returned instead of an empty object.

<script type="text/jsx">
 var NotesList = React.createClass({
  render: function() {
   return (
    <ol>
     {
      React.Children.map(this.props.children, function (child) {
          return <li>{child}</li>;
        })
     }
    </ol>
   );
  }
 });
 
 React.render(
  <NotesList>
   <span>hello</span>
   <span>hello</span>
  </NotesList>,
  document.body
 );
</script>

It should be noted here that there are three possible values ​​for this.props.children : if the current component has no child nodes, it is undefined ; if there is one child node, the data type is object ; if there are multiple child nodes, the data type is array . So, be careful when handling this.props.children .

React provides a utility method React.Children to handle this.props.children . We can use React.Children.map to iterate over child nodes without worrying about whether the data type of this.props.children is undefined or object .

Pass in the following ReactElement:

<NotesList>
  <span>hello</span>
  <span>hello</span>
</NotesList>
//Return two child nodes <NotesList></NotesList>
//Return undefined
 
 
<NotesList>null</NotesList>
//Return null

2. React.Children.forEach

React.Children.forEach(object children, function fn [, object context])

Similar to React.Children.map(), but does not return an object.

3. React.Children.count

number React.Children.count(object children)

Returns the total number of components in children, which corresponds to the number of invocations of the callback function passed to map or forEach.

render: function() {
  console.log(React.Children.count(this.props.children)); //2
 
  return (
   <ol>
    {
     this.props.children.forEach(function (child) {
       return <li>{child}</li>
     })
    }
   </ol>
  );
 }

Different ReactElements output count values:

<NotesList>
  <span>hello</span>
  <span>hello</span>
</NotesList>
console.log(React.Children.count(this.props.children)); //2
 
<NotesList></NotesList>
console.log(React.Children.count(this.props.children)); //0
 
<NotesList>null</NotesList>
console.log(React.Children.count(this.props.children)); //1

4. React.Children.only

object React.Children.only(object children)

Returns the only child in children. Otherwise throw an exception.

The only child here, the only method can only accept a single object as a parameter, not multiple objects (arrays).

console.log(React.Children.only(this.props.children[0])); 
//Output object this.props.children[0]

The above is the detailed content of the detailed explanation of the usage of React.Children. For more information about the usage of React.Children, please pay attention to other related articles on 123WORDPRESS.COM!

You may also be interested in:
  • React Hooks Usage Examples
  • In-depth understanding of the core principles of React Native (Bridge of React Native)
  • React+Koa example of implementing file upload
  • Example code for developing h5 form page based on react hooks and zarm component library configuration
  • React antd tabs switching causes repeated refresh of subcomponents
  • ReactJs Basics Tutorial - Essential Edition
  • ReactRouter implementation
  • Detailed explanation of the use of React.cloneElement

<<:  How to prohibit vsftpd users from logging in through ssh

>>:  MySQL 5.5.56 version (binary package installation) custom installation path step record

Recommend

CSS position fixed left and right double positioning implementation code

CSS Position The position attribute specifies the...

A brief discussion on the corresponding versions of node node-sass sass-loader

Table of contents The node version does not corre...

Implementation of MySQL Shell import_table data import

Table of contents 1. Introduction to import_table...

Two ways to introduce svg icons in Vue

How to introduce svg icons in Vue Method 1 of int...

Solve the problem after adding --subnet to Docker network Create

After adding –subnet to Docker network Create, us...

Quickly solve the problem of slow and stuck opening of input[type=file]

Why is it that when the input tag type is file an...

Summary of commonly used escape characters in HTML

The commonly used escape characters in HTML are s...

JavaScript canvas realizes dynamic point and line effect

This article shares the specific code for JavaScr...

JS+Canvas realizes dynamic clock effect

A dynamic clock demo based on Canvas is provided ...

Detailed explanation of Linux command unzip

Table of contents 1. unzip command 1.1 Syntax 1.2...

Detailed explanation of Vue's methods and properties

Vue methods and properties 1. Methods Usage 1 met...

How to implement horizontal bar chart with percentage in echarts

Table of contents Example Code Rendering Code Ana...

Vue implements adding, displaying and deleting multiple images

This article shares the specific code for Vue to ...