我的编程空间,编程开发者的网络收藏夹
学习永远不晚

React.Children的用法详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

React.Children的用法详解

React.Children 是顶层API之一,为处理 this.props.children 这个封闭的数据结构提供了有用的工具。

this.props 对象的属性与组件的属性一一对应,但是有一个例外,就是 this.props.children 属性。它表示组件的所有子节点。

1、React.Children.map


object React.Children.map(object children, function fn [, object context])
 
使用方法:
React.Children.map(this.props.children, function (child) {
  return <li>{child}</li>;
})
其他方法
this.props.children.forEach(function (child) {
  return <li>{child}</li>
})

在每一个直接子级(包含在 children 参数中的)上调用 fn 函数,此函数中的 this 指向 上下文。如果 children 是一个内嵌的对象或者数组,它将被遍历:不会传入容器对象到 fn 中。如果 children 参数是 null 或者 undefined,那么返回 null 或者 undefined 而不是一个空对象。


<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>

这里需要注意, this.props.children 的值有三种可能:如果当前组件没有子节点,它就是 undefined ;如果有一个子节点,数据类型是 object ;如果有多个子节点,数据类型就是 array 。所以,处理 this.props.children 的时候要小心。

React 提供一个工具方法 React.Children 来处理 this.props.children 。我们可以用 React.Children.map 来遍历子节点,而不用担心 this.props.children 的数据类型是 undefined 还是 object

传入如下ReactElement:


<NotesList>
  <span>hello</span>
  <span>hello</span>
</NotesList>
//返回两个子节点
 
 
<NotesList></NotesList>
//返回undefined
 
 
<NotesList>null</NotesList>
//返回null

2、React.Children.forEach

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

类似于 React.Children.map(),但是不返回对象。

3、React.Children.count

number React.Children.count(object children)

返回 children 当中的组件总数,和传递给 map 或者 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>
  );
 }

不同的ReactElement,输出count值:


<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)

返回 children 中 仅有的子级。否则抛出异常。

这里仅有的子级,only方法接受的参数只能是一个对象,不能是多个对象(数组)。


console.log(React.Children.only(this.props.children[0])); 
//输出对象this.props.children[0]

以上就是React.Children的用法详解的详细内容,更多关于React.Children的用法的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

React.Children的用法详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

conn.execute的用法详解

`conn.execute`是一个在SQLAlchemy中使用的方法,用于执行SQL语句并返回结果。使用`conn.execute`时,通常需要提供一个SQL语句作为参数。该SQL语句可以是任意有效的SQL查询语句,例如SELECT、INS
2023-09-14

UpdatePanel的用法详解

UpdatePanel是ASP.NET提供的一种用于实现局部刷新的控件,通过它可以实现Web页面的部分内容的异步刷新,而不需要整个页面重新加载。使用UpdatePanel的步骤如下:1. 在ASP.NET页面中引入UpdatePanel的命
2023-09-23

document.all的用法详解

`document.all` 是一个过时的属性,它是一个类似于数组的对象,包含了网页上的所有元素。它的用法是通过索引或者元素的id来访问特定的元素。以下是关于`document.all`的一些详细解释:1. 访问元素:可以通过索引或者元素的
2023-09-15

define用法详解

define用法:1、定义常量;2、定义函数宏:3、定义条件编译;4、定义多行宏。`define` 是C/C++预处理器的指令之一,用于定义宏。它的基本语法如下:#define 宏名 替换文本当预处理器遇到 `#define` 指令时,会将
2023-10-22

JavaScript中好用的解构用法详解

这篇文章主要为大家介绍了JavaScript中好用的解构用法操作示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-18

详解ViewBinding用法

这篇文章主要介绍了ViewBinding用法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-03-20

ostringstream用法详解

ostringstream是一个C++标准库中的类,可以用来构建字符串,它是一个输出流,可以像使用cout一样使用它,但是输出的结果不会显示在终端,而是保存在一个string对象中。当需要构建字符串时,可以使用ostringstream来操
ostringstream用法详解
2023-12-09

response.write用法详解

response.write是一种用于向客户端发送响应数据的方法。它通常用于在服务器端生成动态内容,然后将生成的数据发送给客户端。这个方法的语法如下:response.write(data)其中,data是一个字符串,表示要发送给客户端的数
2023-09-12

UpdatePanel用法详解

UpdatePanel是ASP.NET WebForms中的一个控件,用于实现部分页面的异步刷新,提供了一种简单的方式来实现局部更新而不需要整体刷新整个页面。使用UpdatePanel的步骤如下:1. 在WebForms页面上添加一个Upd
2023-09-21

MessageBox用法详解

MessageBox是一种常见的对话框,用于向用户显示一条消息并等待用户的响应。它通常用于显示提示、警告或错误信息,以及请求用户确认或提供选择。MessageBox的用法包括以下几个方面:1. 弹出MessageBox:使用MessageB
2023-09-21

ProgressDialog用法详解

ProgressDialog是一种在Android中常用的对话框,用于显示一个长时间运行的任务的进度。ProgressDialog可以显示一个带有进度条的对话框,并且可以设置对话框的标题、消息和样式等属性。使用ProgressDialog,
2023-09-14

编程热搜

目录