在日常的UI构建中,经常会遇到一种情况:组件本身更多是作为一个容器,它所包含的内容可能是动态的、未预先定义的。这时候它的内容取决另一个组件或外部的输入。比如弹层。

props.children:

React在组件中提供了props.children这个内置变量。当我们创建一个用作容器的组件时,在其返回的JSX中插入{props.children},此时{props.children}表示将来容器中需要插入的的内容。

比如我们创建一个带边框的div作为容器,

 //一个带边框的div组件
function FancyBorder(props) {
return (
<div className={'FancyBorder FancyBorder-' + props.color}>
{props.children}
</div>
);
}

以后某个组件在输出的模板中调用了FancyBorder后,所有位于<FancyBorder></FancyBorder>标签内的内容将被看作FancyBorder组件的props.children。

 function WelcomeDialog() {
return (
<FancyBorder color="blue">
<h1 className="Dialog-title">
Welcome
</h1>
<p className="Dialog-message">
Thank you for visiting our spacecraft!
</p>
</FancyBorder>
);
}

当然,更普遍的情况是,我们要分发到容器上的内容,是需要指定位置的。

比如某段文字应该放在容器的右边,而某条评论或图片放在左边。这时候怎么办呢?

props.children给了我们启发。

JSX,也即要渲染的内容,可以作为参数prop传递给组件,然后在组件中恰当的位置进行渲染。要知道,React Element用typeof操作符判断时,其输出是‘object’,对象当然可以作为参数传递给函数啦!

 function SplitPane(props) {
return (
<div className="SplitPane">
<div className="SplitPane-left">
{props.left}
</div>
<div className="SplitPane-right">
{props.right}
</div>
</div>
);
} function App() {
return (
<SplitPane
left={
<Contacts />
}
right={
<Chat />
} />
);
}

这就解决了组件内容的嵌套和分发。

在React构建UI组件时,变量、方法、组件都可以作为props传递给子组件,实现单向的数据传输。

Specialization:定制化处理(我是这么理解啦)

我们常常需要用组件来实现一个特定的模块/视图。比如一个弹层,可以是警告,也可以是登陆框,更可以是某个内容展示。

既然我们可以通过props来分发内容,自然可以利用它来对定制一个符合我们期望的组件。

通过给容器传入各种参数、React Element,我们完全可以控制在模板的什么地方展示什么内容。这一切都通过props进行集合处理。

例子就不给了,跟上边一样,记住:

props.children分发容器标签之中的内容

props.xxx 分发其他指定内容

最新文章

  1. redux学习
  2. 微软Azure 经典模式下创建内部负载均衡(ILB)
  3. 使用FastReport打印二维码
  4. MySQL 5.7.9版本sql_mode=only_full_group_by问题
  5. SSM的各个配置文件
  6. Java Security: Illegal key size or default parameters?
  7. .net微信公众号开发——快速入门
  8. Workspace Cloning / Sharing in Jenkins
  9. C#中八皇后问题的递归解法——N皇后
  10. spring mvc:注解@ModelAttribute妙用
  11. JIRA 敏捷开发平台部署记录
  12. 【翻译】针对多种设备定制Ext JS 5应用程序
  13. Mysql创建索引
  14. Flex编码随笔
  15. ORACLE当中自定义函数性优化浅析
  16. Google 新实现的Protobuf RPC: grpc
  17. .Net(c#)打印--多页打印
  18. Easy File Sharing Web Server 6.9远程溢出漏洞
  19. Cocos2d-x
  20. POJ 3904 JZYZOJ 1202 Sky Code 莫比乌斯反演 组合数

热门文章

  1. 详解PHP中instanceof关键字及instanceof关键字有什么作用
  2. Git基本操作和使用
  3. 监控CPU与GPU的工具
  4. [Qt] 通过socket将另一个程序的某个窗口调到最前端
  5. Spring boot 自定义banner
  6. Java反射机制概念及使用
  7. 标准库os
  8. ReentrantReadWriteLock及共享锁的实现
  9. #Week1 Introduction
  10. swipe 滑动操作