React HOC 是纯函数吗?

IT技术 javascript reactjs higher-order-functions higher-order-components
2021-05-09 12:31:58

据说 React HOC 是纯函数。但是我们不是在原始/基础组件中添加一些props并返回一个新的增强组件吗?那么有了这个“添加”props,HOCs 怎么仍然被认为是纯函数?

1个回答

HOC 是纯函数,因为它没有副作用。文档

请注意,HOC 不会修改输入组件,也不会使用继承来复制其行为。相反,HOC 通过将原始组件包装在容器组件中来组成它。HOC 是一个零副作用的纯函数。

我认为这种思考 HOC 的方式似乎有点偏离的一件事是 props 被添加到输入组件中。输入组件提供了它已经可以接受的新props,组件本身没有任何改变。

我一直回到这个答案,因为我觉得关于它可以说很多,但考虑一个高阶函数:

  const higherOrderFunction = (pureFunc) => {
    const x = someWorkWithoutSideEffects;
    return pureFunc(x);
  }

我们会说它higherOrderFunction不仅是一个高阶函数,而且是一个纯函数,对吧?我认为这非常类似于 HOC 正在做的事情。