Dê uma olhada em Temas Shoutem para React Native.
Aqui está o que você obtém com o tema Shoutem:
Estilo global em que determinado estilo é aplicado automaticamente ao componente por seu nome de estilo:
const theme = {
'my.app.ComponentStyleName': {
backgroundColor: 'navy',
},
};
Ativando certo estilo específico de componente com styleName
(como classe CSS):
const theme = {
'my.app.ComponentStyleName': {
'.rounded': {
borderRadius: 20,
},
backgroundColor: 'navy',
},
};
// Implementation - will apply borderRadius to Component
<Component styleName="rounded"/>
Herança automática de estilo:
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>
Estilo aninhado para componentes compostos:
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>
);
}
Para fazê-lo funcionar, você precisa usar StyleProvider
o componente wrapper que fornece estilo a todos os outros componentes por meio do contexto. Semelhante ao Redux StoreProvider
.
Além disso, você precisa conectar seu componente ao estilo connectStyle
para sempre usar o componente conectado. Semelhante ao Redux connect
.
export const styledComponent = connectStyle('my.app.ComponentStyleName',
{ ...defaultStyleIfAny })(Component);
Você pode ver um exemplo na documentação.
Uma última coisa, nós também fornecemos um conjunto de componentes em nosso UI ToolKit que já estão conectados ao estilo, então você pode apenas importá-los e estilo em seu estilo / tema global.