我认为一些道具(例如,主题)在组件中是如此普遍,以至于提取它们的处理(对于超类)是有意义的.然后它的默认值也属于那里. 但是,在React实现这一目标的唯一方法是什么? class Base extend
但是,在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: [] });