Hãy xem Shoutem Themes cho Phản ứng Native.
Đây là những gì bạn nhận được với Shoutem Theme:
phong cách toàn cầu nơi phong cách nhất định được tự động áp dụng cho thành phần theo tên phong cách của nó:
const theme = {
'my.app.ComponentStyleName': {
backgroundColor: 'navy',
},
};
Kích hoạt phong cách cụ thể thành phần nhất định với styleName
(như lớp CSS):
const theme = {
'my.app.ComponentStyleName': {
'.rounded': {
borderRadius: 20,
},
backgroundColor: 'navy',
},
};
// Implementation - will apply borderRadius to Component
<Component styleName="rounded"/>
Thừa kế kiểu tự động:
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>
kiểu lồng nhau cho các thành phần gồm:
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>
);
}
Để có được nó làm việc bạn cần phải sử dụng StyleProvider
, thành phần wrapper cung cấp phong cách cho tất cả các thành phần khác thông qua ngữ cảnh. Tương tự như Redux StoreProvider
.
Ngoài ra, bạn cần kết nối thành phần của mình theo kiểu với connectStyle
để bạn luôn sử dụng thành phần được kết nối. Tương tự như Redux connect
.
export const styledComponent = connectStyle('my.app.ComponentStyleName',
{ ...defaultStyleIfAny })(Component);
Bạn có thể xem ví dụ trong tài liệu.
Một điều cuối cùng, chúng tôi cũng cung cấp bộ thành phần trong UI ToolKit đã được kết nối với kiểu, vì vậy bạn chỉ có thể nhập chúng và tạo kiểu theo kiểu/chủ đề chung của mình.
Vâng, đây là những gì tôi mô tả. Cảm ơn bạn đã xác nhận rằng tôi đã có ý tưởng đúng. Sẽ đánh dấu là câu trả lời đúng cho bây giờ. – Patm
Bây giờ bạn chỉ có thể sử dụng 'nhập {StyleSheet} từ 'phản ứng gốc'; ' – LYu
Tôi đã thêm câu trả lời giải thích một cách khác để lấy kiểu toàn cầu, bạn có thể muốn xem http: // stackoverflow. com/questions/30853178/react-native-global-style/41751407 # 41751407. Nó linh hoạt hơn nhiều và trong tinh thần React vì nó tránh định nghĩa tĩnh. –