zl程序教程

您现在的位置是:首页 >  工具

当前栏目

react:组件之间的组合

组件React 之间 组合
2023-09-27 14:27:09 时间

背景

react 推荐使用组合而非继承来实现组件间的代码重用。
不推荐组件的继承

其实组合就是父子传值

例一

使用一个特殊的 children prop 来将他们的子组件传递到渲染结果中:

function FancyBorder(props) {
  return (
    <div className={'FancyBorder FancyBorder-' + props.color}>
      {props.children}
    </div>
  );
}
// 组件中间的这部分传给了上面的 props.children
function WelcomeDialog() {
  return (
    <FancyBorder color="blue">
      // 中间=======
      <h1 className="Dialog-title">
        Welcome
      </h1>
      <p className="Dialog-message">
        Thank you for visiting our spacecraft!
      </p>
      // 中间结束======
    </FancyBorder>
  );
}

例二

也可以将所需内容传入 props,并使用相应的 prop。

function SplitPane(props) {
  return (
    <div className="SplitPane">
      <div className="SplitPane-left">
        {props.left}
      </div>
      <div className="SplitPane-right">
        {props.right}
      </div>
    </div>
  );
}

function App() {
  return (
    <SplitPane
      left={
        <Contacts />
      }
      right={
        <Chat />
      } />
  );
}

<Contacts /><Chat /> 之类的 React 元素本质就是对象(object),所以你可以把它们当作 props,像其他数据一样传递。这种方法可能使你想起别的库中“槽”(slot)的概念,但在 React 中没有“槽”这一概念的限制,你可以将任何东西作为 props 进行传递。