在 React 中,构建wrapper组件的例子:
ExpenseItem.js:
import "./ExpenseItem.css";
import Card from "./Card";
import ExpenseDate from "./ExpenseDate";
function ExpenseItem(props) {
return (
<Card className="expense-item">
<ExpenseDate date={props.date} />
<div className="expense-item__description">
<h2>{props.title}</h2>
<div className="expense-item__price">${props.amount}</div>
</div>
</Card>
);
}
export default ExpenseItem;
import "./Card.css";
function Card(props) {
// 重要!
// 使用 props.className 接收 style 属性
// classes 的值: card expense-item
const classes = "card " + props.className;
return <div className={classes}>{props.children}</div>;
}
export default Card;
children
是一个 React 保留字,是每一个组件都会接收到的属性,不管你用不用此属性。并且这个特殊的 children 属性的值将始终是自定义组件的开始和结束标记之间的内容。以上面的代码为例, children
的属性的值是 Card 开始标签和结束标签之间的内容:
<ExpenseDate date={props.date} />
<div className="expense-item__description">
<h2>{props.title}</h2>
<div className="expense-item__price">${props.amount}</div>
</div>
Vue 使用 slot 构建可重用的 wrapper 组件。