【问题标题】:react-navigation tab navigator Screens' contents are not shown / the screens are blank issuereact-navigation tab navigator 屏幕内容未显示/屏幕为空白问题
【发布时间】:2018-01-03 20:04:08
【问题描述】:

我对 react-navigation 选项卡导航器有疑问。屏幕内容未显示/屏幕为空白。有任何想法吗 ? 这是我的导航器结构:

import { StackNavigator, TabNavigator } from 'react-navigation';
import PeopleList from './PeopleList';
import CompanyList from './CompanyList';
import AddPerson from './AddPerson';
const Navigation = TabNavigator({
  People: { screen: PeopleList },
  Person: { screen: AddPerson },
  Company: { screen: CompanyList },
 }, {
 tabBarOptions: {
  activeTintColor: 'white',
  inactiveTintColor: '#80cbc4',
  swipeEnabled: true,
  showLabel: false,
  style: {
    backgroundColor: '#26a69a',
  },
 },
});
export default Navigation;

更新:

这是包含渲染方法的 App.js 文件:

    import React, {Component} from 'react';
    import {StyleSheet, Text, View} from 'react-native';
    import firebase from 'firebase';
    import {Provider} from 'react-redux';
    import {createStore} from 'redux'
    import Login from './Login';
    import Loader from './Loader';
    import Navigation from './Navigation';
    import reducers from '../reducers/PeopleReducer';

    const styles = StyleSheet.create({
      container: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
        backgroundColor: '#F5FCFF'
      }
    });

    const store = createStore(reducers);

    export default class App extends Component {
      state = {
        loggedIn: null
      };

      componentWillMount() {
        firebase.initializeApp({
          apiKey: "xxxxxxxxxxxxxxxxxxx",
          authDomain: "xxxxxxxxxxxxxxxxxxx",
          databaseURL: "xxxxxxxxxxxxxxxxxxx",
          projectId: "xxxxxxxxxxxxxxxxxxx",
          storageBucket: "xxxxxxxxxxxxxxxxxxx",
          messagingSenderId: "xxxxxxxxxxxxxxxxxxx"
        });

        firebase
          .auth()
          .onAuthStateChanged((user) => {
            if (user) {
              this.setState({loggedIn: true});
            } else {
              this.setState({loggedIn: false});
            }
          });
      }

      renderInitialView() {
        switch (this.state.loggedIn) {
          case true:
            return <Navigation/> /*exists above*/
          case false:
            return <Login/>;
          default:
            return <Loader size="large"/>;
        }
      }
      render() {
        return (
          <Provider store={store}>
            <View style={styles.container}>
              {this.renderInitialView()}
            </View>
          </Provider>
        );
      }
    }

我确定它适用于第一种 switch,但出现空白屏幕,我不知道原因。

【问题讨论】:

  • 包括你的渲染方法

标签: react-native react-native-navigation tabnavigator


【解决方案1】:
render() {
    return (
      <Provider store={store}>
        <View style={styles.container}>
          {this.renderInitialView()}
        </View>
      </Provider>
    );
  }
}

去掉标签导航不能用标签包裹,像这样。

render() {
    return (
      <Provider store={store}>

          {this.renderInitialView()}

      </Provider>
    );
  }
}

这样就可以了。

【讨论】:

  • 其实是容器视图有 justifyContent: 'center' 的问题,谢谢你的回答
  • 我遇到了同样的问题,但是通过删除 标签,tabBar 可见但未正确对齐?请告诉我应该删除 justifyContent 吗?或任何其他解决方案?
  • 只删除容器的 justifyContent 和 alignItems 属性,不需要它们它对我有用
  • ^^ 为什么是这个原因?我同意这是原因。删除后,我的内容就会显示出来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-07
  • 2020-06-02
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-26
相关资源
最近更新 更多