因此,我正在阅读有关HOC的react文档(位于此处:https://reactjs.org/docs/higher-order-components.html),其中包括以下部分:
“抵制在HOC中修改组件原型(或对其进行突变)的诱惑。”
function logProps(InputComponent) {
InputComponent.prototype.componentWillReceiveProps = function(nextProps) {
console.log('Current props: ', this.props);
console.log('Next props: ', nextProps);
};
// The fact that we're returning the original input is a hint that it has
// been mutated.
return InputComponent;
}
// EnhancedComponent will log whenever props are received
const EnhancedComponent = logProps(InputComponent);
“这存在一些问题。一个问题是输入组件不能与增强组件分开重复使用。”
为什么当包装的组件是可变的输入组件时,它不被认为是可重用的?
编辑:如果您认为文档的这一部分只是胡说八道,如果有某种解释,我会接受它作为答案。
最佳答案
修改InputComponent
的原型会更改InputComponent
的定义,并且会影响InputComponent
的每个实例。
如果您以私有的,封装的方式修改原型-即以没人知道的方式修改原型-那么就没有人知道InputComponent
是什么了,因此他们无法可靠地使用它。