inheritance - 从React中的父类(super class)继承defaultProps

标签 inheritance reactjs ecmascript-6

我认为某些props(例如,主题)在组件中非常通用,因此提取它们的处理(到父类(super class))是有意义的。那么它们的默认值也属于那里。

但是,在 React 中实现这一目标的惯用方法是什么?

class Base extends React.Component {
  bgColor() {
    switch (this.props.theme) {
      case 'Summer': return 'yellow'; break;
      case 'Autumn': return 'grey'; break;
      case 'Winter': return 'white'; break;
    }
  }
}
Base.defaultProps = {
  theme: 'autumn'
};
<小时/>
class Sky extends Base {
  render() {
    return <div style={{backgroundColor: this.bgColor()}}>{this.props.clouds}</div>;
  }
}
Sky.defaultProps = {
  clouds: []
};

...defaultProps 是一个属性(与实例相反),并且没有继承。

最佳答案

通过分配Sky.defaultProps,您可以隐藏基本属性。如果你想组合它们,你需要明确地这样做,例如

Sky.defaultProps = Object.assign({}, Base.defaultProps, {
  clouds: []
});

关于inheritance - 从React中的父类(super class)继承defaultProps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30646125/

相关文章:

c++ - 使用继承的成员函数指针的 unordered_map,使用 std :function

c++ - 为什么我必须通过this指针访问模板基类成员?

reactjs - 如何将 borderTop 添加到 React Material UI Table?

javascript - 为什么用户点击的内容不会出现在我的模态上?

javascript - 哪些手机浏览器支持ES6?

javascript - 在 Angular 组件中创建 Angular 服务时,如何为其设置自定义构造函数参数?

javascript - 如何仅使用所需的键从另一个对象获取对象?

c++ - 什么是对象切片?

arrays - 如何在 Swift 中子类化数组类?

javascript - 使用 Jest 监视默认导出函数