Skip to content

Latest commit

 

History

History
38 lines (31 loc) · 1.22 KB

05.wrapper-components.md

File metadata and controls

38 lines (31 loc) · 1.22 KB

Wrapper Components

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

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

const SampleComponent = () => {
  <Parent>
    <Child />
  </Parent>
};

const Parent = () => {
  // 你能使用class 'bla'或者其他的class来给子组件加上不同的样式.
  <div className="bla">
    {this.props.children}
  </div>
};

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

const SampleComponent = () => {
  <Wrap tagName="div" content="Hello World" />
};

const Wrap = ({ tagName, content }) => {
  const Tag = `${tagName}`     // 变量名必须大写开头因为这是一个组件.
  return <Tag>{content}</Tag>
}

参考资料: