Погляньте на теми Shoutem для React Native.
Ось що ви отримуєте від теми Shoutem:
Глобальний стиль, де певний стиль автоматично застосовується до компонента за його назвою стилю:
const theme = {
'my.app.ComponentStyleName': {
backgroundColor: 'navy',
},
};
Активація певного стилю, специфічного для компонента, styleName
(наприклад, класу CSS):
const theme = {
'my.app.ComponentStyleName': {
'.rounded': {
borderRadius: 20,
},
backgroundColor: 'navy',
},
};
// Implementation - will apply borderRadius to Component
<Component styleName="rounded"/>
Автоматичне успадкування стилю:
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>
Вкладений стиль для компонованих компонентів:
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>
);
}
Щоб це працювало, вам потрібно використовувати StyleProvider
компонент-обгортку, який надає стиль усім іншим компонентам через контекст. Подібно до Redux StoreProvider
.
Також вам потрібно підключити ваш компонент до стилю, connectStyle
щоб ви завжди використовували підключений компонент. Подібно до Reduxconnect
.
export const styledComponent = connectStyle('my.app.ComponentStyleName',
{ ...defaultStyleIfAny })(Component);
Ви можете побачити приклад у документації.
Останнє, ми також надали набір компонентів у нашому наборі інтерфейсів, які вже підключені до стилю, тому ви можете просто імпортувати їх та стиль у своєму глобальному стилі / темі.