我認爲一些props
(例如,主題)在組件中非常普遍,因此將它們的處理(對超類)進行提取是有意義的。然後,它們的默認值也屬於那裏。在React中繼承超類的defaultProps
但是,在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語句。我知道這不像使用默認道具的超類那麼優雅,但我相信這仍然可行。 –