Я думаю, что некоторые props
(например, тема) настолько универсальны среди компонентов, что имеет смысл извлечь их обработку (в суперкласс). Затем следует, что их значение по умолчанию также принадлежит.Inheriting defaultProps from superclass in 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
является класса собственности (в отличие от например), и нет наследования.
Если вы ищете решение чисто Реагировать на основе, Вы рассмотрели настройки присланного реквизита в состоянии компоненты, и с помощью 'getInitialState' указать значения по умолчанию, если не был получены никакого реквизита? –
Хм, да, но я думал, что это действительно не принадлежит 'state', поскольку это не то, что меняется –
В этом случае вы можете просто указать значение по умолчанию в' bgColor() '. Если 'this.props.theme == null', верните' 'grey'', в противном случае используйте оператор switch, который у вас уже есть. Я понимаю, что это не так элегантно, как использование суперкласса с поддержкой по умолчанию, но я считаю, что это все равно будет работать. –