在 React 中,继承 propTypes 时,如何避免重复?

IT技术 reactjs ecmascript-6
2021-05-27 04:44:37

我正在为一些共享方法和一些(但不是全部)props的 React 组件使用抽象超类。

class AbstractStory extends Component { ... }
AbstractStory.propTypes = {
  storyForm: PropTypes.string,
  timestamp: PropTypes.number
}

class NewContentStory extends AbstractStory { ... }

我假设如果子类的 propTypes 与超类没有区别,我可以在子类中不声明它们,并且它们将从超类继承。

但是,如果子类有其他属性,是否有一种好方法可以在不重申超类上声明的内容的情况下声明它们?这样做有什么问题吗?

NewContentStory.propType = {... AbstractStory, newProp: PropTypes.string}

如果子类修改了在超类上声明的属性(使其成为必需的,为对象添加形状等)呢?

1个回答

真正的答案是,按照惯例,除了React.Component函数组合是 React 中抽象的主要方式之外您并不真的想要扩展组件

换句话说:你应该嵌套组件,而不是在 React 中扩展类。