react的项目开发中有使用一些UI框架框架中有一些组件是这样写的:这是react-bootstrap轮播图组件。
<Carousel activeIndex={index} onSelect={handleSelect}>
{
props.swiperImg ? props.swiperImg.map((item, index) => {
return (
<Carousel.Item key={index}>
<img alt={item.slide_des} src={'https://www.onecc.net/data/upload/' + item.slide_pic} />
</Carousel.Item>
)
}) : ('')
}
</Carousel>
组件名有Carousel.Item这样的写法,于是就深入学习了一下。
找到UI框架的组件文件Item是组件的一个静态方法
继续往下找:可以发先Item是一个顶层为div的dom元素
关键就是组件下的一个tag为div的静态方法(就叫你静态组件好了)
自己实现一个简单的静态组件
父组件
<HookApi Cref={childRef}>
<HookApi.Con>423423421111111111111111113</HookApi.Con>
<HookApi.Con>23423423423424234</HookApi.Con>
</HookApi>
子组件:这里我吧静态组件的名字为Con然后tag为div(尽量选用html标签名如:HookApi.Con = 'div'渲染到浏览器上为div)
import React from 'react';
function HookApi(props) {
console.log(props)
return (
<div>
{
props.children.map((item,index) => {
return (
<div key={index}>
{item}
</div>
)
})
}
</div>
);
}
HookApi.Con = 'div'
export default HookApi
这个Con就相当于是一个react组件了
渲染到浏览器中是这样的
如果 HookApi.Con = 'div'则渲染出来的是这样的并会爆出组件渲染错误:
<Con /> is using incorrect casing. Use PascalCase for React components, or lowercase for HTML elements.