React 组件传 children 的各种案例方案详解
更新时间:2023年10月12日 09:40:32 作者:祖安狂人学编程
自定义组件的时候往往需要传 children,由于写法比较多样,我就总结了一下,要自定义的组件其中包含一个 title 和一个 children,本文通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
自定义组件的时候往往需要传 children
,由于写法比较多样,我就总结了一下。
要自定义的组件是这样的:
其中包含一个 title
和一个 children
。
定义一个后面要用到的 Props
:
/** 定义属性对象 * - title: 标题 * - children: 子组件 */ type Props = { title: string; children?: React.ReactNode; };
1. 类组件
1.1 类组件,不使用解构
class ClassComponent1 extends Component<Props> { render(): ReactNode { return ( <div style={{ backgroundColor: 'red' }}> <h2>{this.props.title}</h2> {this.props.children} </div> ); } }
1.2 类组件,使用解构
class ClassComponent2 extends Component<Props> { render(): ReactNode { // 解构赋值 const { title, children } = this.props; return ( <div style={{ backgroundColor: 'red' }}> <h2>{title}</h2> {children} </div> ); } }
2. 函数组件
2.1 函数组件,不使用解构
const FunctionComponent1: React.FC<Props> = (props) => { return ( <div style={{ backgroundColor: 'orange' }}> <h2>{props.title}</h2> {props.children} </div> ); };
2.2 函数组件,外部解构
const FunctionComponent2: React.FC<Props> = ({ title, children }) => { return ( <div style={{ backgroundColor: 'orange' }}> <h2>{title}</h2> {children} </div> ); };
2.3 函数组件,内部解构
const FunctionComponent3: React.FC<Props> = (props) => { // 解构赋值 const { title, children } = props; return ( <div style={{ backgroundColor: 'orange' }}> <h2>{title}</h2> {children} </div> ); };
3. 普通函数
3.1 普通函数,内部解构
function NormalFunction1(props: Props) { // 解构赋值 const { title, children } = props; return ( <div style={{ backgroundColor: 'yellow' }}> <h2>{title}</h2> {children} </div> ); }
3.2 普通函数,外部解构
function NormalFunction2({ title, children }: Props) { return ( <div style={{ backgroundColor: 'yellow' }}> <h2>{title}</h2> {children} </div> ); }
3.3 普通函数,外部解构,不使用自定义Type
function NormalFunction3({ title, children, }: { title: string; children?: React.ReactNode; }) { return ( <div style={{ backgroundColor: 'yellow' }}> <h2>{title}</h2> {children} </div> ); }
3.4 普通函数,不使用解构,不使用自定义Type
function NormalFunction4(props: { title: string; children?: React.ReactNode }) { return ( <div style={{ backgroundColor: 'yellow' }}> <h2>{props.title}</h2> {props.children} </div> ); }
调用及展示
export default class ChildrenPage extends Component { render() { return ( <div style={{ padding: '20px' }}> <h1>组件传children</h1> <ClassComponent1 title="类组件,不使用解构"> <p>这里是children</p> </ClassComponent1> <ClassComponent2 title="类组件,使用解构"> <p>这里是children</p> </ClassComponent2> <FunctionComponent1 title="函数组件,不使用解构"> <p>这是里children</p> </FunctionComponent1> <FunctionComponent2 title="函数组件,外部解构"> <p>这是里children</p> </FunctionComponent2> <FunctionComponent3 title="函数组件,内部解构"> <p>这是里children</p> </FunctionComponent3> <NormalFunction1 title="普通函数,内部解构"> <p>这里是children</p> </NormalFunction1> <NormalFunction2 title="普通函数,外部解构"> <p>这里是children</p> </NormalFunction2> <NormalFunction3 title="普通函数,外部解构,不使用自定义Type"> <p>这里是children</p> </NormalFunction3> <NormalFunction4 title="普通函数,不使用解构,不使用自定义Type"> <p>这里是children</p> </NormalFunction4> </div> ); } }
到此这篇关于React 组件传 children 的各种方案的文章就介绍到这了,更多相关React 组件传 children内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
React Native基础入门之初步使用Flexbox布局
React中引入了flexbox概念,flexbox是属于web前端领域CSS的一种布局方案,下面这篇文章主要给大家介绍了关于React Native基础入门之初步使用Flexbox布局的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下2018-07-07使用react-native-image-viewer实现大图预览
这篇文章主要介绍了使用react-native-image-viewer实现大图预览,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-09-09
最新评论