首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应本机的主题使用for本机ui kitten

反应本机的主题使用for本机ui kitten
EN

Stack Overflow用户
提问于 2018-10-14 04:43:59
回答 1查看 3.6K关注 0票数 1

我正在尝试使用react本机ui-kitten来响应本机组件,并且它的工作性能非常好。最近,我想在我的应用程序中添加主题,并使用它们的“RkTheme”和“RkType”,但是没有一个在起作用。

使用RkTheme.setTheme(themeJson)设置主题应更改已在屏幕上呈现的元素的样式。

使用RkTheme.setTheme(themeJson)实际设置主题并不改变已经呈现的组件集的样式。

下面是json包的一部分

代码语言:javascript
复制
  "dependencies": {
"prop-types": "^15.6.1",
"react": "16.2.0",
"react-dom": "^16.3.1",
"react-native": "0.51.0",
"react-native-linear-gradient": "^2.4.0",
"react-native-popup-menu": "^0.9",
"react-native-ui-kitten": "3.1.2",
"react-native-vector-icons": "^4.6.0",
"react-navigation": "1.0.0-beta.11",
"react-redux": "^5.0.7",
"realm": "^2.15.3",
"redux": "^3.7.2",
"redux-logger": "^3.0.6",
"redux-thunk": "^2.3.0",
"util": "^0.11.0",

},

react组件的示例代码

代码语言:javascript
复制
    import React from 'react'
import { StyleSheet, Text, View, Image, Button , TouchableOpacity} from 'react-native'
import {applyTheme} from '../config/bootstrap'
import {RkStyleSheet, RkTheme} from 'react-native-ui-kitten'
import { LightTheme } from '../config/lightTheme';
import { DarkTheme } from '../config/darkTheme';
export default class Sample extends React.Component {
  constructor(props){
    super(props)
    this.changeTheme = this.changeTheme.bind(this)
  }
  changeTheme(theme){
    if(theme){
      RkTheme.setTheme(DarkTheme,null)
    } else {
      RkTheme.setTheme(LightTheme,null)
    }
  }
  render() {
    return (
      <View style={styles.container}>
        <Text>Sample</Text>
        <TouchableOpacity  onPress = { (e) => this.changeTheme(false) }>
          <Text style={styles2.button1}>Apply Light</Text>
        </TouchableOpacity>
        <TouchableOpacity   onPress = { (e) => this.changeTheme(true) }>
          <Text style={styles2.button1}>Apply Dark</Text>
        </TouchableOpacity>
      </View>
    )
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
})
const styles2 = RkStyleSheet.create(theme => ({
  button1 : {
    color : theme.colors.secondaryColor
  }
}))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-15 19:04:51

我们需要添加'withRkTheme‘到组件中,我们认为这些组件将在更改主题后实时更改主题颜色。还需要注意的一点是,--如果我们在根组件的呈现函数中使用任何其他自定义组件,定制组件应该扩展'RkComponent‘而不是'React.Component'。光是这个就解决了我的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52799548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档