javascript - 在 React 中使用高阶组件来格式化子组件

标签 javascript reactjs ecmascript-6

我正在构建一个包装器组件,通过将布局配置作为 Prop ,在网格中垂直或水平渲染子组件:

class App extends React {
  render() {
    return (
      <WrapperComponent layout="horizontal">
        <ChildComponent1>
        <ChildComponent2/>
        <ChildComponent3/>
      </WrapperComponent/>
  }
}

我想创建一个 HOC,它返回 <VerticalLayout/><HorizontalLayout/>组件取决于传递给 <WrapperComponent/> 的配置。

所以代码模式应该是: const LayoutComponent = HOC(InputComponent) .

我无法通过<WrapperComponent/>作为 HOC 的输入,因为它需要包裹 <ChildComponents/> ,它是此布局的入口点:

如何通过 HOC 实现实现预期结果?我知道这可以在没有 HOC 的情况下实现,但我特别想通过实现 HOC 来编写这个程序,如 <VerticalLayout/> 的一些任务/代码和<HorizontalLayout/>会是一样的,也是因为我想练习编写 HOC。

最佳答案

不要重新发明轮子!它已经存在并且可以使用,请查看:https://github.com/acdlite/recompose/blob/master/docs/API.md#branch

基本上,您将配置作为条件传递,这些行周围的内容应该可以解决问题:

branch(
  test: ( { config } => (config.isVertical),
  left: <VerticalLayout/>,
  right: <HorizontalLayout/>
)

关于javascript - 在 React 中使用高阶组件来格式化子组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49414221/

相关文章:

javascript - 冲突事件 : onKeyPress & onClick

javascript - 数组对象上字符串值的总和

JavaScript 函数默认参数 - 奇怪的行为

javascript - 如何分别使用 jQuery 分隔字符串中的元素

javascript - 如何使用 KineticJS 在 javascript 变量中添加换行符?

javascript - 如果我两次使用相同的 react/redux 组件,它们会共享状态吗?

javascript - 从自定义数据库连接类返回的值是 'undefined' ,使用node.js和ES6

javascript - 这个javascript序列到底发生了什么?

javascript - 如何在 VS Code 中将一种界面主题与其他文本颜色主题一起使用?

javascript - 从迭代器/生成器获取单个 yield 值