• Wrapper Components
    • 参考资料:

    Wrapper Components

    对我们的组件进行包装来适配不同的样式/交互行为.
    如果你想处理<div>或者其他HTML标签的话, 你可以使用组合.

    当你创建React实例的时候, 你能在jsx标签内包裹其他的React组件或者任意的JavaScript表达式.
    父组件通过this.props.children能访问到其包裹的子组件.

    1. const SampleComponent = () => {
    2. <Parent>
    3. <Child />
    4. </Parent>
    5. };
    6. const Parent = () => {
    7. // 你能使用class 'bla'或者其他的class来给子组件加上不同的样式.
    8. <div className="bla">
    9. {this.props.children}
    10. </div>
    11. };

    值得一提的是, 包裹组件同样可以通过接收一个tag名来生成对应的HTML标签.
    但是一般情况下我们不推荐这么做, 因为这样做的话你就不能添加属性或者传入props了.

    1. const SampleComponent = () => {
    2. <Wrap tagName="div" content="Hello World" />
    3. };
    4. const Wrap = ({ tagName, content }) => {
    5. const Tag = `${tagName}` // 变量名必须大写开头因为这是一个组件.
    6. return <Tag>{content}</Tag>
    7. }

    参考资料:

    • Slides from my talk: Building Multi-tenant UI with React