单个插槽
- 子组件
``jsx import React from "react"; import { PropTypes } from "prop-types"; import "./index.less"; const Title = (props) => { const { className, text, children } = props; return ( <div className={title-container Title- ${className}`}>
); };<p className="text">{text}</p>{/* 此处是由父组件传过来的插槽 */}{children}
// 规定props的数据类型 Title.propTypes = { className: PropTypes.string, text: PropTypes.string, children: PropTypes.array, };
Title.defaultProps = { className: “”, text: “预警信息展示”, children: [], };
export default Title;
- 父组件```jsximport React from "react";import Title from "@/components/Title";export default class LeftTop extends React.Component {constructor(props) {super(props);this.state = { date: new Date() };}render() {return (<div className="left-top-container"><Title>{/* 传入两个插槽内容 */}<div className="other">其余内容</div><div className="other2">其余内容</div></Title></div>);}}
- 效果
限定插槽
限制传入的子元素的展示位置
//这是一个数组 会直接把三个div直接显示在子组件中{this.props.children}//只是把这个children数组第一个元素放到子组件中{this.props.children[0]}//这是通过filter筛选出指定自定义属性的名称来放入到子组件中{this.props.children.filter(itme => itme.props.name=="header")}
给组件限定 header main footer 三个位置的插槽
<Title><div name="header">Hello World!</div><div name="main">Hello World!</div><div name="footer">Hello World!</div></Title>
