据说 React HOC 是纯函数。但是我们不是在原始/基础组件中添加一些props并返回一个新的增强组件吗?那么有了这个“添加”props,HOCs 怎么仍然被认为是纯函数?
React HOC 是纯函数吗?
IT技术
javascript
reactjs
higher-order-functions
higher-order-components
2021-05-09 12:31:58
1个回答
HOC 是纯函数,因为它没有副作用。从文档:
请注意,HOC 不会修改输入组件,也不会使用继承来复制其行为。相反,HOC 通过将原始组件包装在容器组件中来组成它。HOC 是一个零副作用的纯函数。
我认为这种思考 HOC 的方式似乎有点偏离的一件事是 props 被添加到输入组件中。输入组件提供了它已经可以接受的新props,组件本身没有任何改变。
我一直回到这个答案,因为我觉得关于它可以说很多,但考虑一个高阶函数:
const higherOrderFunction = (pureFunc) => {
const x = someWorkWithoutSideEffects;
return pureFunc(x);
}
我们会说它higherOrderFunction
不仅是一个高阶函数,而且是一个纯函数,对吧?我认为这非常类似于 HOC 正在做的事情。