在之前组件之前都是通过父组件的render中进行合并返回为一个整体组件,单个组件相对外部都是相互独立的。

本节将会介绍组件之间的组合,如包裹关系、通过props传递组件进行内部组合等

1,通过组件标签进行包裹子组件实现组合,在组件内部通过this.props.children 特殊属性进行获取,如:

import React from 'react';
import ReactDOM from 'react-dom';//React推荐使用组合而非继承来实现组件间的代码重用。
class Window extends React.Component{constructor(props){super(props);}render(){return(<div style={{border:"5px solid #ccc"}}>{this.props.children}</div>);}
}ReactDOM.render(<Window>
This is Mgs Window!
</Window>,document.getElementById('root'));

2,通过属性传递组件,比如我们要实现一个聊天窗口,我们需要将左侧联系人列表组件和右侧聊天界面合并为一个组件,此时我们可以将联系人组件、以及聊天窗口作为父组件的属性传入,在父组件的render中可以进行自由组合,代码如下:

import React from 'react';
import ReactDOM from 'react-dom';//React推荐使用组合而非继承来实现组件间的代码重用。
class Window extends React.Component{constructor(props){super(props);}render(){return(<div style={{border:"5px solid #ccc"}}>{this.props.children}</div>);}
}//联系人
class Contacts extends React.Component{constructor(props){super(props);}render(){return(<div>联系人列表</div>);}
}class ChatWindow extends React.Component{constructor(props){super(props);}render(){return(<table><tr><td>{this.props.left}</td><td>{this.props.right}</td></tr></table>);}
}
var winObj =  <ChatWindow left={<Contacts />} right={<Window>聊天窗口</Window>} />;ReactDOM.render(winObj,document.getElementById('root'));

3,另外也可以通过对子组件进行再次封装包裹成为新的组件,如:

import React from 'react';
import ReactDOM from 'react-dom';//React推荐使用组合而非继承来实现组件间的代码重用。
class Window extends React.Component{constructor(props){super(props);}render(){return(<div style={{border:"5px solid #ccc"}}>{this.props.children}</div>);}
}class WelcomeWindow extends React.Component{constructor(props){super(props);}render(){return (<div>{this.props.title}<Window >{this.props.msg}</Window>  </div>);}
}ReactDOM.render(<WelcomeWindow title="欢迎你" msg="欢迎来到这里。。" />,document.getElementById('root'));

React 第十一章 组件的组合使用相关推荐

  1. PMBOK(第六版) PMP笔记——《十一》第十一章(项目风险管理)

    PMBOK(第六版) PMP笔记--<十一>第十一章(项目风险管理) 第十一章 风险管理: 项目的独特性导致项目充满风险,项目风险是一种不确定的事件或条件,可能发生.将 要发生,也可能不发 ...

  2. 信息系统项目管理师---第十一章项目风险管理历年考题

    信息系统项目管理师-第十一章项目风险管理历年考题 1.2005 年 5 月第 47 题 :在项目风险管理的基本流程中,不包括下列中的(C ). A.风险分析 B.风险追踪 C.风险规避措施 D.风险管 ...

  3. 精通Web Analytics 2.0 (13) 第十一章:变身分析忍者的指导原则

    精通Web Analytics 2.0 (13) 第十一章:变身分析忍者的指导原则 精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第十一章:变身分析忍者的指导原则 这个激动人 ...

  4. PMP备考指南之第十一章:项目风险管理

    求关注 项目风险管理 第十一章 项目风险管理 项目的独特性导致项目充满风险,项目风险是一种不确定的事件或条件,可能发生.将要发生,也可能不发生.已发生的消极风险可视为问题,问题又会引发风险. 7 个过 ...

  5. 第十一章 Direct3D Initialization

    第十一章 Direct3D Initialization 本章将完成渲染引擎的基础部分的最后一个模块Direct3D的初始化,学习Direct3D C++ API,并完成一个Direct3D应用程序. ...

  6. 第十一章.软件工程(下)

    目录 第十一章.软件工程 第九节.面向对象设计 面向对象(OAA)的基本概念 面向对象开发各阶段划分及任务 OOA 设计原则 OOA - UML OOA 设计模式的概念 OOA 设计模式的分类 创建型 ...

  7. PMBOK(第六版) PMP笔记——《第十一章 项目风险管理》

    第十一章 风险管理: 项目的独特性导致项目充满风险,项目风险是一种不确定的事件或条件,可能发生.将 要发生,也可能不发生. 已发生的消极风险可视为问题,问题又会引发风险. 7 个过程: 1.规划风险管 ...

  8. 第十一章 Servlet MVC模式

    内包含案例,基于jsp+servlet的:MVC模式计算器:MVC模式登陆 第十一章 Servlet MVC模式 模型-视图-控制器(model-view-controller),简称MVC.MVC是 ...

  9. 【译】 WebSocket 协议第十一章——IANA 注意事项(IANA Considerations)

    概述 本文为 WebSocket 协议的第十一章,本文翻译的主要内容为 WebSocket 的 IANA 相关注意事项. IANA 注意事项(协议正文) 11.1 注册新 URI 协议 11.1.1 ...

最新文章

  1. 前端通过spark-md5.js计算本地文件md5
  2. 分级调节是调节机制吗_机制砂大热,5种制砂工艺及特点介绍,选对生产工艺,保证高效生产...
  3. you just 飞鸽传书2007绿色版 ever day for two years
  4. hdu 1421 搬寝室
  5. winsock 收发广播包
  6. 【FPGA初级】4选一数据选择器的verilog实现(含testbench与波形)
  7. Pytorch获取中间变量的梯度
  8. ios设备的弹窗页面,光标错位,光标乱跳
  9. mac mini u盘安装系统_系统安装丨如何制作U盘启动盘?
  10. 统计软件简介与数据操作
  11. mysql中一些字节如何计算_在MySQL中将字节值计算为兆字节(MB)?
  12. C#笔记5//建造游戏1/网格地图脚本1/自编/仅创建网格/无需插件
  13. css pseudo elements,CSS 伪元素 (Pseudo-elements)
  14. HarvestText
  15. 阿里云OSS对象存储搭建网盘教程
  16. Nat. Commun.| 机器学习对可突变的治疗性抗体的亲和力和特异性进行共同优化
  17. ubuntu18升级/安装cmake 超详细(亲测成功,2022年7月13日)
  18. android程序出现了奇怪的错误 Field requires API level 5 (current min is 1): ......
  19. layui动态表格下拉菜单
  20. C++ 利用结构体数组编写一个程序,对10名小学生的信息进行管理,学生结构体的成员包括姓名、学号、年龄、语文成绩、数学成绩、英语成绩、三门课总分等

热门文章

  1. datetime类型保存的时间比实际时间少8小时
  2. Java常见OutOfMemoryError
  3. 线程池异步线程中再次获取线程池资源的问题
  4. Intellij idea利用Statistic插件统计项目代码行数
  5. 浅谈Hibernate批量操作
  6. Nodejs学习笔记(七)——接口API
  7. Android使用谷歌插件,详解谷歌官方教程 Android插件ADT 9.0.0
  8. linux挂载华为存储fc,linux 挂载存储设备
  9. java变量默为public_《Java8学习笔记》读书笔记(六)
  10. java mail 接受QQ邮箱未读的邮件