javascript - 如何在 React 中将重复的 JSX 抽象为高阶组件

标签 javascript reactjs higher-order-components

我正在尝试学习如何编写高阶组件,并且我有两个代码非常相似的组件。据我所知,重复代码是 HOC 的一个很好的候选者。当 HOC 与注入(inject)到组件中的其他 JSX 相关时,我似乎无法理解如何编写 HOC。

举一个小例子,假设我有这两个组件:

const MySection = (props) => (
  <div passedProp={props.passed} >
    <Row>
      <FirstName />
    </Row>

    <Row>
      <LastName />
    </Row>
  </div>
);


const MySectionWithConfirmation = (props) => (
  <div passedProp={props.passed} >
    <Row>
      <FirstName />
      <ConfirmFirstName />
    </Row>

    <Row>
      <LastName />
      <ConfirmLastName />
    </Row>
  </div>
);

上面的东西可以做成 HOC 吗?像这样的东西会如何重写?

最佳答案

您可以为 confirm 添加一个 prop,并拥有一个可重用的组件,无需 HOC。像这样的东西:

const MySectionWithOptionalConfirmation = (props) => (
    <div passedProp={props.passed} >
      <Row>
        <FirstName />
        {props.confirm && <ConfirmFirstName />}
      </Row>

      <Row>
        <LastName />
        {props.confirm && <ConfirmLastName />}
      </Row>
    </div>
  )

关于javascript - 如何在 React 中将重复的 JSX 抽象为高阶组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57511049/

相关文章:

javascript - React Hooks 状态更改未传入正确的 props

interop - 如何在 ReasonReact 中绑定(bind)和使用高阶组件

javascript - 如何使用显示全部/无按钮使其工作?

javascript - node.js 最小设置和 package.json 是什么?

javascript - react 登录页面

javascript - react Bootstrap 组件开关不工作

reactjs - 如何通过 HOC 传递父 props 并正常使用它

reactjs - 键入 React HOC 的正确方法是什么?

javascript - 如何使用 css 控制此 js 脚本中的嵌入文本

javascript - 减少对象数组: limit similar fields based on value from another field