Eche un vistazo a Temas de Shoutem para React Native.
Esto es lo que obtienes con el tema Shoutem:
Estilo global donde cierto estilo se aplica automáticamente al componente por su nombre de estilo:
const theme = {
'my.app.ComponentStyleName': {
backgroundColor: 'navy',
},
};
Activando cierto estilo de componente específico con styleName
(como clase CSS):
const theme = {
'my.app.ComponentStyleName': {
'.rounded': {
borderRadius: 20,
},
backgroundColor: 'navy',
},
};
// Implementation - will apply borderRadius to Component
<Component styleName="rounded"/>
Herencia de estilo automática:
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 anidado para componentes compuestos:
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 que funcione, debe usar StyleProvider
el componente contenedor que proporciona estilo a todos los demás componentes a través del contexto. Similar a ReduxStoreProvider
.
También necesita conectar su componente al estilo connectStyle
para que siempre use el componente conectado. Similar a Redux connect
.
export const styledComponent = connectStyle('my.app.ComponentStyleName',
{ ...defaultStyleIfAny })(Component);
Puede ver un ejemplo en la documentación.
Una última cosa, también hemos proporcionado un conjunto de componentes en nuestro UI ToolKit que ya están conectados al estilo, por lo que puede importarlos y diseñar en su estilo / tema global.