【发布时间】:2023-03-17 04:18:01
【问题描述】:
目标:在 React Native 应用程序中实现 暗模式。 系统简介: 文件结构:
- 个人资料.ts
- ProfileCss.ts
- constants.ts
在我的应用程序中,为了将样式与组件分开,我将它们移动到 .ts 文件中并作为模块导出。 StyleCss.ts 示例:
import {StyleSheet} from 'react-native';
import {Window, FixedCSS, hsize, wsize} from '../../entities/constants';
export default StyleSheet.create({
loading: {
backgroundColor: FixedCSS.Colors.MainBackgroundColor,
}
...
});
所有与样式相关的常量值都存储在 constants.ts 中,例如 Colors、LineHeights 等。constants.ts 还包含一个名为 FixedCSS 具有静态属性:
export class FixedCSS {
static isDark = true;
static Colors = {
// Main Colors
RootColor: FixedCSS.isDark ? '#FF6666' : '#FF6666',
MainBackgroundColor: FixedCSS.isDark ? '#050505' : '#FFFFFF',
...
}
...
}
FixedCSS 的 isDark 属性应该在 Profile.ts 中的 Switch 组件的帮助下进行更改
<Switch
value={darkMode}
onValueChange={value => {
this.setState({darkMode: value});
}}
/>
问题:如何更改 FixedCSS 类中的 isDark 属性,使其影响组件的外观。最有问题的方面是 StyleCSS.ts 文件不会反映 FixedCSS 类中 isDark 属性的更改,因为它们仅在创建 js 包时导出一次。
【问题讨论】:
标签: javascript reactjs typescript react-native rendering