美文网首页
RN 切换主题

RN 切换主题

作者: 精神病患者link常 | 来源:发表于2022-06-13 00:54 被阅读0次

方式一:https://www.jianshu.com/p/8ce1ef5dfc59
方式二:切换主题就是切换style,通过reduce的修改切换

思路:
1.创建themeReduce,保存 light/dark
2.创建style时,获取themeReduce的值,通过colors配置读取对应的数据

1.创建主题reduce、colors

import { createSlice, PayloadAction } from "@reduxjs/toolkit";
const initialState:any = {
  theme:'light',
}

// light dark
type ThemeParams = {
  themeName:string,
}

export const Theme = createSlice({
  name:'theme',
  initialState:initialState,
  reducers:{
    changeTheme:(state:any,actions:PayloadAction<ThemeParams>)=>{
      state.theme = actions.payload.themeName
    }
  }
})

export const {changeTheme} = Theme.actions
export default Theme.reducer

const Colors:any = {
  light: {
    text: '#000',
    background: '#fff',
  },
  dark: {
    text: '#fff',
    background: '#000',
  },
};

2.创建hook

export default function useColorScheme() {
  const themeName = useSelector((state:any) => state.theme.theme)
  return themeName
}

3.创建style

import { StyleSheet } from 'react-native'
import { Platform } from 'react-native'
import Colors from '../../constants/Colors'
import useColorScheme from '../../hooks/useColorScheme'

const dynamicStyles = () => {
  const theme = useColorScheme()
  const colorTheme = Colors[theme]
  return StyleSheet.create({
    mainView:{
      flex: 1,
      backgroundColor: colorTheme.background,
    },
  })
}
export default dynamicStyles

4.页面使用

const styles = dynamicStyles()

function onChangeTheme(){
  dispatch(changeTheme({themeName:'dark'}))
}

<TouchableOpacity style={styles.btnsetting} onPress={onChangeTheme}>
  <Text>切换主题</Text>
</TouchableOpacity>

相关文章

  • RN 切换主题

    方式一:https://www.jianshu.com/p/8ce1ef5dfc59[https://www.ji...

  • RN-切换主题-简洁版

    实现功能:切换背景色 使用技术点:context[http://react.caibaojian.com.cn/d...

  • React-Native 入门之小技巧

    本文介绍一些RN的全局设置: 修改字体(全局) RN切换打包环境 切换后台,多次切换后台环境,切换打包环境好像是 ...

  • ReactNative与iOS原生交互方式汇总

    前言 最近用RN开发SDK,涉及RN与iOS各种交互。 有些交互比如用iOS原生切换多个RN页面,以及iOS调用R...

  • iOS & React-Native 混编,内存泄漏问题解决

    项目中集成了 RN,由于采用原生 & RN 混编的模式,业务上会频繁出现原生页面与 RN 页面切换的情况。但由于处...

  • Swift & React-Native 混编,内存泄漏问题解决

    项目中集成了 RN,由于采用原生 & RN 混编的模式,业务上会频繁出现原生页面与 RN 页面切换的情况。但由于处...

  • 切换主题

    日/夜间主题 使用Android Support Library 中的 UiMode来做“日/夜间主题” 以背景颜...

  • 主题切换

    主题切换在前几年很火的一个技术,俗称换肤!今天我们来实现下这个主题是怎么切换的。主体思路:1.要求的图片名是一样的...

  • 主题切换

    1.什么是主题切换? 就是在一个app中实现不同的主题.在同一种主题下,所有字体颜色一样,背景图的样式一样. 2....

  • 主题切换

    http://www.open-open.com/lib/view/open1460934455593.html ...

网友评论

      本文标题:RN 切换主题

      本文链接:https://www.haomeiwen.com/subject/wwgnmrtx.html