因此,我正在阅读有关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是什么了,因此他们无法可靠地使用它。

07-24 18:16