两种方式:组件children 和 props
组件children
- 使用组件的时候,双标签,内部加入react element元素
- 定义组件的时候,内部通过this.props.children获取插槽元素
原理:
组件使用的时候,双标签引入,并添加子元素,实质上,调用了React.createElement('NavBar', config, children)
,其中childern会在组件本身通过props.children
获取。再来说下props.children
,如果有多个,那么是array类型,如果是一个,那么是reactElement类型。
demo
效果
组件定义
组件使用
评价children方式
缺点:
由于props.children
取决于外层传入个数的影响,类型为数组和react element导致内部处理要通过类型作区分。并且,组件定义的时候要严重依赖索引。如下:
children长这样
props
- 使用组件的时候,单标签即可,将属性通过props属性传递进去
- 定义组件的时候,render函数JSX中获取
this.props
作为内容渲染【内容可以是字符串,也可以是react element】
demo
效果
组件定义
组件使用
评价props
好处: 比children严重依赖索引的更方便,且灵活,外层传递可以随便定义参数,可以是字符串,变量,react element.这种方式开发中用的比较多
补充:作用域插槽
概念:数据子组件提供,内容渲染由父组件确定
demo
改进这个TabBar,TabBar内部逻辑没变,app.jsx决定展示形式。例如;流行展示span,新歌展示button,精选这是你和斜体i
解决思路 组件使用时,通过props传递一个回调函数,父组件定义回调函数【接受item参数展示逻辑】。组件定义的时候,调用父亲回调
子组件
父组件