typescript - React Native / Styled Components - 主题
问题描述
希望你一切都好。
所以,我正在尝试使用样式组件在 RN 中创建一个主题切换器;
当我切换我的主题切换器时,什么也没有发生。
我创建了以下钩子:
从'react'导入反应,{ createContext,ReactNode,useContext,useState}
接口 IThemeProviderProps { 孩子:ReactNode }
接口 ThemeData { toggleTheme: () => void currentTheme: string }
const ThemeContext = createContext({} as ThemeData)
export const CustomThemeProvider = ({ children }: IThemeProviderProps) => { const [currentTheme, setWwitchTheme] = useState('light')
const toggleTheme = () => { if (currentTheme ==='light'){ setWwitchTheme('dark') } setWwitchTheme('dark') console.log({currentTheme}) } return ( <ThemeContext.Provider value={{ toggleTheme, currentTheme }}> {children} </ThemeContext.Provider> ) }
导出函数 useCustomTheme() { const context = useContext(ThemeContext)
return context }
然后我像这样设置我的应用程序:
导入'react-native-gesture-handler' import { ThemeProvider } from 'styled-components/native' import { AppProvider } from './src/components/hooks' import { useCustomTheme } from './src/components/hooks/主题' import { Routes } from './src/routes' import { dark } from './src/styles/themeDark' import { light } from './src/styles/themeLight'
导出默认函数 App() { const { currentTheme } = useCustomTheme()
return ( <AppProvider> <ThemeProvider theme={ currentTheme === 'light' ? light : dark}> <Routes /> </ThemeProvider> </AppProvider> ) }
贝娄遵循我的主题切换器代码:
导入 { DrawerContentScrollView } from '@react-navigation/drawer' import React from 'react' import { View, Text, Switch } from 'react-native'
从'../hooks/Theme'导入{useCustomTheme};
从 './styles' 导入 { Container }
导出函数 DrawerContent({ ...props }) {
const {currentTheme, toggleTheme} = useCustomTheme(); function handleTheme () { } return ( <Container> <DrawerContentScrollView> <View> <Switch value={!!currentTheme} onValueChange={toggleTheme} /> <Text>{currentTheme}</Text> </View> </DrawerContentScrollView> </Container> ) }
解决方案
推荐阅读
- c# - 如何生成我正在下载的文件的路径名中的文件夹
- java - 无法使用枚举编译 swagger 库
- cordova - 命令 ionic cordova build android 的问题
- php - PhpSpreadSheet:如何将工作簿工作表保存在单个 CSV 文件中
- excel - 为什么筛选功能在excel中不起作用?
- c# - 当方法具有 [AllowAnonymous] 时调用自定义 AuthenticationHandler
- python - 如何计算二维数组中有多少个包含某个字符串的元素?
- ios - 如何在表格视图中设置json数据
- sql - SQL Server BCP 实用程序未创建输出文件
- sql - 如何在 SQL 中考虑多语言环境的本地化