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

时间:2019-03-22 13:40:00

标签: reactjs ecmascript-6

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

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

class NewContentStory extends AbstractStory { ... }

我假设,如果子类的propType与超类没有区别,则可以在子类上不声明它们,而它们将从超类继承。

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

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

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

1 个答案:

答案 0 :(得分:2)

真正的答案是,按照惯例,您实际上不需要扩展React.Component以外的组件,因为功能组合是React中抽象的主要方式。

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