javascript - React - 组件导出多个组件

标签 javascript reactjs

我有一个接收页眉、主页脚和页脚的组件。 (页眉和页脚可选)

const View = (props) => {
  const { header, main, footer } = props;
  return (
   <div>
     {header && <header>{header}</header>}
     <main>{main}</main>
     {footer && <footer>{footer}</footer>}
  </div>
  );
};


 ReactDOM.render(
    <View header={<p>content header</p>} main={<p>content main</p>} footer={<p>content footer</p>} />,
    document.body
  );
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

但我不想通过 props 传递 jsx。我想做这样的事情。

我该怎么做?

const View = (props) => {
  const { children } = props;
  return (
   <div>
   {children}
  </div>
  );
};


 ReactDOM.render(
    <View>
      <View.Header>
        <p>content header</p>
      </View.Header>
      <View.Main>
        <p>content main</p>
      </View.Main>
      <View.Footer>
        <p>content footer</p>
      </View.Footer>
    </View>
    ,
    document.body
  );
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

最佳答案

您似乎想要创建一个 compound component FullView 组件的。声明 HeaderMainFooter 组件,然后将它们作为属性添加到 FullView 组件上。

// FullView.js
const FullView = ({ children }) => <div>{children}</div>;

const Header = ({ children }) => <div>{children}</div>;
const Main = ({ children }) => <div>{children}</div>;
const Footer = ({ children }) => <div>{children}</div>;

FullView.Header = Header;
FullView.Main = Main;
FullView.Footer = Footer;

// export default FullView;

// index.js
ReactDOM.render(
  <FullView>
    <FullView.Header>
      <p>content header</p>
    </FullView.Header>
    <FullView.Main>
      <p>content main</p>
    </FullView.Main>
    <FullView.Footer>
      <p>content footer</p>
    </FullView.Footer>
  </FullView>,
  document.body
 );
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.2/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.2/umd/react-dom.production.min.js"></script>

关于javascript - React - 组件导出多个组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70968926/

相关文章:

javascript - 尝试创建日历事件时权限被拒绝 (403)

javascript - Angular 2 路由异步解析不会保留导航位置

javascript - Angular js : put service in other file

ios - 在 react-native 中如何检测右半边屏幕是否被点击?

reactjs - 将复选框中的多个值添加到对象数组

javascript - 这两个jquery表达式的含义?

javascript - JS : karma rollup empty bundle

reactjs - Express 未获取 React 构建文件夹

javascript - 检查 react 输入表单的小数并更改值

javascript - React 钩子(Hook)的奇怪行为 : delayed data update