React 具有强大的组合模型,我们建议使用组合而不是继承来复用组件之间的代码。
包含关系
一些组件不能提前知道它们的子组件是什么。这对于 Sidebar 或 Dialog 这类通用容器尤其常见。
我们建议这些组件使用 children 属性将子元素直接传递到输出。
实例:
![](https://img.haomeiwen.com/i2789632/dd66024a8f37eefa.png)
code:
import React, { Component } from 'react';
import './App.css';
function FancyBorder(props) {
return (
<div className={'FancyBorder FancyBorder-' + props.color} style={{color:props.color}}>
{props.children}
</div>
);
}
class App extends Component {
constructor(props) {
super(props);
}
render() {
return (
<FancyBorder color="blue">
<h1 className="Dialog-title">
Welcome
</h1>
<p className="Dialog-message">
Thank you for visiting our spacecraft!
</p>
</FancyBorder>
);
}
}
export default App;
继承, 不建议使用!!!
在 Facebook 网站上,我们的 React 使用了数以千计的组件,然而却还未发现任何需要推荐你使用继承的情况。
属性和组合为你提供了以清晰和安全的方式自定义组件的样式和行为所需的所有灵活性。请记住,组件可以接受任意元素,包括基本数据类型、React 元素或函数。
网友评论