Dai un'occhiata ai temi Shoutem per React Native.
Ecco cosa ottieni con il tema Shoutem:
Stile globale in cui un determinato stile viene applicato automaticamente al componente in base al nome dello stile:
const theme = {
'my.app.ComponentStyleName': {
backgroundColor: 'navy',
},
};
Attivazione di determinati stili di componenti specifici con styleName(come la classe CSS):
const theme = {
'my.app.ComponentStyleName': {
'.rounded': {
borderRadius: 20,
},
backgroundColor: 'navy',
},
};
// Implementation - will apply borderRadius to Component
<Component styleName="rounded"/>
Ereditarietà automatica dello stile:
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>
Stile nidificato per componenti composti:
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>
);
}
Per farlo funzionare è necessario utilizzare StyleProvideril componente wrapper che fornisce lo stile a tutti gli altri componenti attraverso il contesto. Simile a Redux StoreProvider.
Inoltre è necessario collegare il componente allo stile con in connectStylemodo da utilizzare sempre il componente connesso. Simile a Redux connect.
export const styledComponent = connectStyle('my.app.ComponentStyleName',
{ ...defaultStyleIfAny })(Component);
Puoi vedere un esempio nella documentazione.
Un'ultima cosa, abbiamo anche fornito un set di componenti nel nostro UI ToolKit che sono già collegati allo stile, quindi puoi semplicemente importarli e lo stile nel tuo stile / tema globale.