【问题标题】:How to pass children to React Reusable components?如何将子级传递给 React 可重用组件?
【发布时间】:2020-04-17 17:26:42
【问题描述】:

我想制作一个可重用的组件,并以特定的方式传递其他组件,就像 UI 库所做的那样。

例如,假设我想构建一个 Card 组件,

一种可能的方法是像 props 一样传递组件:

return (
  <Card
    header={<MyHeader />}
    body={<MyBody />}
  />
)

但我想知道当我们这样称呼它时它是如何完成的:

return (
  <Card>
    <Card.Header> 
      // I can put whatever I want here ...
    </Card.Header>

    <Card.Body>
      <div>
        // The same goes here too ..
      </div>
    </Card.Body>
  </Card>
);

有没有一种简单的方法可以使用功能组件来做到这一点?

【问题讨论】:

    标签: reactjs react-native react-hooks


    【解决方案1】:

    其实很简单,你想象不到,只需将BodyHeader组件分别在Card组件文件夹和Card组件的index.js中都导入即可.附加到Card 组件,然后附加到export default Card。可能是ant.designthe form 组件:

    Head 组件在其单独的文件中:

    import React from "react";
    
    const Head = () => (
        <div>
            // some codes
        </div>
    );
    
    export default Head;
    

    Body 组件在其单独的文件中:

    import React from "react";
    
    const Body = () => (
        <div>
            // some codes
        </div>
    );
    
    export default Body;
    

    现在在创建Card 组件的index.js 文件中:

    import React from "react";
    import Head from "./Head";
    import Body from "./Body";
    
    const Card = () => (
        <div>
            // some codes
        </div>
    );
    
    Card.Head = Head;
    Card.Body = Body;
    
    export default Card;
    

    现在,当您导入Card 组件时,您可以随心所欲地访问BodyHead

    import Head from "[pathToCardComponent]/Card";
    
    ~~~
    
    <Card>
      <Card.Head>header</Card.Head>
      <Card.Body>body</Card.Body>
    </Card>
    

    【讨论】:

    • 感谢您的回复,对不起,恐怕我在解释问题时做得不好。我想做的是实现这个“卡片”组件。我在诸如 Semantic UI 之类的 UI 库中看到他们使用这种点表示法(Card.Header),但我不知道它是如何处理的。
    猜你喜欢
    • 1970-01-01
    • 2020-04-05
    • 1970-01-01
    • 2020-12-19
    • 2015-07-12
    • 2019-12-17
    • 2020-10-10
    • 2017-08-16
    • 2015-01-28
    相关资源
    最近更新 更多