我是 React 的新手,仍在努力理解 HOC。
我们知道:
HOC 是一个函数,它接受一个组件并返回一个新组件,该组件环绕它以提供附加功能。
例如:
export function ProFeature(FeatureComponent) {
return function(props) {
if (props.pro) {
let { pro, ...childProps} = props;
return <FeatureComponent {...childProps} />
} else {
return (
<h5 className="bg-warning text-white text-center">
This is a Pro Feature
</h5>
)
}
}
}
所以 ProFeature 是一个 HOC。
但是要调用一个东西成为一个组件,它需要直接渲染内容。例如,对于名为 customComponent 的无状态组件,我们应该能够通过以下方式呈现其内容:
<CustomComponent />
但我们不能在 HOC 上这样做:
<ProFeature /> //invalid
相反,我们需要做:
let Abc = ProFeature(CustomComponent);
然后
<Abc/>
所以 HOC 不是一个组件?如果不是组件,为什么叫高阶组件?它不应该被称为高阶函数等吗?