javascript - react 多个高阶组件

标签 javascript reactjs

我刚刚发现在我的 React 项目中使用 HOC 的惊人好处。

我的问题是在一个组件上调用多个 HOC 函数会影响性能吗?

示例

export default withState(withLabel(withTheme(MyComponent)))

这当然只会渲染一个组件,但是看看我的 react 开发工具,我可以看到输出的 HOC 组件有三个层次。这是需要警惕的事情还是有更好的方法在组件上调用多个 HOC?

最佳答案

你的语法相当于做:

<StateProvider>
  <LabelProvider>
    <ThemeProvider>
      <MyComponent />
    </ThemeProvider>
  </LabelProvider>
</StateProvider>

性能影响将取决于这些 HOC 的实现方式。您可能必须逐一查看。

例子:

  • Theme Provider HOC 通常在 React 上下文中存储一堆颜色和变量。因此,在您的应用程序的最根部使用一个就足够了。
  • 可以想象您的 LabelProvider 只是在您的组件之前添加一个额外的跨度,在这种情况下几乎没有什么可担心的
  • 像 redux 这样的 StateProvider 通常会在它们下面的组件中注入(inject) props,因此您别无选择,只能在需要状态对象时使用它们。

总而言之,没有硬性规定。您的主要关注点应该是了解这些 HOC 的作用,并尝试限制不必要的应用重新渲染。

关于javascript - react 多个高阶组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49606846/

相关文章:

javascript - Moment.js - "Accessing Moment through the global scope"警告消息

reactjs - UseEffect 和事件监听器与 React 的区别?

css - Loader 在 flex 容器内时不旋转

javascript - 无法使用 react 原生蓝牙

javascript - 获取 TypeError : this. props.users.items 在 ReactJs 上未定义

javascript - 这个 JavaScript 对象解构是如何工作的?

javascript - 如何显示带有下划线模板的 JS 对象?

javascript - 使用 jQuery 从 Json 输出 HTML 字符串

javascript - 如何在 jQuery 单击事件中显示不透明背景

javascript - 组件 q-table 中单元格的 Quasar 条件样式