首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用react-context后出现空白屏幕问题

使用react-context后出现空白屏幕问题
EN

Stack Overflow用户
提问于 2019-01-06 07:21:49
回答 2查看 852关注 0票数 0

我正在尝试制作一个动态的主题,但我有一个问题。当我将React.context与提供者和消费者一起使用时,我的应用程序不会在屏幕上显示任何内容。

这是我的App.js

代码语言:javascript
复制
import React from 'react';
import Route from './route/Route';
import { ThemeProvider } from './reusables/theme/themeContext';

const AppContainer = createAppContainer(Route);

export default class App extends React.Component {
  render() {
    return (
      <ThemeProvider>
        <AppContainer/>   
      </ThemeProvider>
    );
  }
}

--路由

代码语言:javascript
复制
import { createStackNavigator } from "react-navigation";

const BaseStack = createStackNavigator(
{
    Overview: { 
      screen: OverviewScreen,
      navigationOptions: { header: null, },
    },
    {
      initialRouteName: 'Overview',
    }
})
export default BaseStack;

--提供程序类

代码语言:javascript
复制
import React, {Component} from 'react';

const ThemeContext = React.createContext({
    themeColor: '#f45',
    changeThemeColor: () => null,    
});

export const ThemeConsumer = ThemeContext.Consumer;

export class ThemeProvider extends Component {
    state = {
        themeColor: '#f45',
    }

    changeThemeColor = (themeColor) => {
        this.setState({ themeColor });
    }

    render() {
        return (
            <ThemeContext.Provider 
                value={{
                    themeColor: this.state.themeColor,
                    changeThemeColor: this.changeThemeColor,
                }}>
                { this.props.children }
            </ThemeContext.Provider>
        )
    }
}

--子组件

代码语言:javascript
复制
import React, { Component } from 'react';
import { View, StatusBar, ScrollView, ToastAndroid } from 'react-native';

/* --- STYLES - COLORS ---*/
import gStyle from '../styles/Style.global';
import { ThemeConsumer } from '../reusables/theme/themeContext';

export default class OverviewScreen extends Component {
    constructor(props) {
        super(props);
        this.state = {
        }
    }

    render() {
        return (
            <ThemeConsumer>
                {( themeColor ) => {
                    <View style={[{backgroundColor: themeColor}, gStyle.container]}>
                        <StatusBar hidden/>
                        {this.overviewPage()}
                    </View>
            }}
        </ThemeConsumer>
    );
}

当我尝试运行app时,屏幕是空白的。控制台中没有警告。我不知道如何解决这个问题。

EN

回答 2

Stack Overflow用户

发布于 2019-01-06 17:37:17

你的道具没有被传递给AppContainer:

代码语言:javascript
复制
export default class App extends React.Component {
  render() {
    return (
      <ThemeProvider>
        <AppContainer {...this.props} />   
      </ThemeProvider>
    );
  }
}
票数 0
EN

Stack Overflow用户

发布于 2020-05-17 18:55:19

您不会从Context.Consumer返回任何内容

编辑:迟做总比不做好。

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

https://stackoverflow.com/questions/54057218

复制
相关文章

相似问题

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