Stack Navigator не показывает экраны - PullRequest
0 голосов
/ 07 мая 2019

Итак, я пытался заставить работать стековый навигатор. Согласно console.log ('Main'), я действительно выхожу на главный экран. Что я и хочу. Тем не менее, экран просто дает мне пустой экран с отображением только заголовка. Я понятия не имею, в чем проблема. Я думал, что это может быть со стилем, но я удалил и изменил его, и, похоже, ничего не работает. То, как я работал, просто делало . Но это не сработает, потому что я пытаюсь перемещаться с помощью кнопок. Скриншот логина Главная

App.js
  renderComponent() {
    if (this.state.loggedIn) {
      return (
        <Container />
        )
    } else {
      return (
        <LoginForm />
      )
    }
  }
  render() {
    return (
      <View>
        <Header title='InTouch' />
        {this.renderComponent()}
      </View>
    );
  }
}


Screen Container
import React, { Component } from 'react';
import { createStackNavigator, createAppContainer } from 'react-navigation';
import { View, Button } from 'react-native';
import Main from './src/components/Main'
import Upload from './src/components/Upload'

const NavigationStack = createStackNavigator({
    Main: {screen: Main },
    Upload: {screen: Upload},

},{
    navigationOptions: {
        gesturesEnabled:false
    }
})

const Container = createAppContainer(NavigationStack);

export default Container; 


Main.js

export default class Main extends Component<Props> {
    state = { currentUser: null}

  componentDidMount() {
    const { currentUser } = firebase.auth()

    this.setState({ currentUser })
  }
  render() {
    console.log("Main")
    const { currentUser } = this.state

      return (
        <View>
          <Text>Hello</Text>
          <Button title = "Go to upload story" onPress = {() => this.props.navigation.navigate('Upload')} />
          <Button
          title="Sign out"
          onPress={() => firebase.auth().signOut()} />
        </View>
      );

Я просто хочу, чтобы появился Main.

1 Ответ

0 голосов
/ 07 мая 2019

Экран входа в систему должен находиться под стеком навигации, и после входа в систему вы можете перейти к другому экрану

попробуйте сделать это следующим образом

const NavigationStack = createStackNavigator({
    Login: {screen: Login }
    Main: {screen: Main },
    Upload: {screen: Upload},

},{
    navigationOptions: {
        gesturesEnabled:false
    }
})

или вы можете создать отдельную навигацию для входа в системуи другие экраны с помощью переключателя

const HomeNavigation = createStackNavigator({
    Main: {screen: Main },
    Upload: {screen: Upload},

},{
    navigationOptions: {
        gesturesEnabled:false
    }
})

const RootNavigation = createSwitchNavigator({
    Login: {screen: Login }
    Home: {screen: HomeNavigation }
});

и в App.js do


  render() {
    return (
      <RootNavigation/>
    );
  }
...