Schauen Sie sich Shoutem-Themen für React Native an.
Folgendes erhalten Sie mit Shoutem Theme:
Globaler Stil, bei dem ein bestimmter Stil automatisch anhand seines Stilnamens auf die Komponente angewendet wird:
const theme = {
'my.app.ComponentStyleName': {
backgroundColor: 'navy',
},
};
Aktivieren eines bestimmten komponentenspezifischen Stils mit styleName
(wie CSS-Klasse):
const theme = {
'my.app.ComponentStyleName': {
'.rounded': {
borderRadius: 20,
},
backgroundColor: 'navy',
},
};
// Implementation - will apply borderRadius to Component
<Component styleName="rounded"/>
Automatische Stilvererbung:
const theme = {
'my.app.ComponentStyleName': {
'my.app.ChildComponentStyleName': {
backgroundColor: 'red',
},
'.rounded': {
borderRadius: 20,
},
backgroundColor: 'navy',
},
};
// Implementation - will apply red background color to ChildComponent
<Component styleName="rounded">
<ChildComponent/>
</Component>
Verschachtelter Stil für zusammengesetzte Komponenten:
const theme = {
'my.app.ComponentStyleName': {
containerView: {
paddingTop: 10,
},
innerView: {
backgroundColor: 'yellow',
},
},
};
// Of course do not forget to connect Component
function Component({ style }) {
return (
<View style={style.containerView}>
<View style={style.innerView}>
<Text>Warning with yellow background.</Text>
</View>
</View>
);
}
Damit es funktioniert, müssen Sie StyleProvider
die Wrapper-Komponente verwenden , die allen anderen Komponenten über den Kontext Stil verleiht. Ähnlich wie bei Redux StoreProvider
.
Außerdem müssen Sie Ihre Komponente mit dem Stil verbinden, connectStyle
damit Sie immer die verbundene Komponente verwenden. Ähnlich wie bei Redux connect
.
export const styledComponent = connectStyle('my.app.ComponentStyleName',
{ ...defaultStyleIfAny })(Component);
Sie können das Beispiel in der Dokumentation sehen.
Als letztes haben wir in unserem UI ToolKit eine Reihe von Komponenten bereitgestellt, die bereits mit dem Stil verbunden sind, sodass Sie sie einfach importieren und in Ihrem globalen Stil / Thema stylen können.