не может перемещаться между экранами, expo говорит, что следующая ошибка, undefined не является объектом (оценка '_this.props.navigation.navigate') - PullRequest
0 голосов
/ 22 марта 2020

Я новичок ie, работающий над реактивом. Я пытаюсь использовать встроенный навигатор стека для перемещения между экранами. при работе так же с функцией это работает. с компонентом класса я не смог получить вывод. Что мне нужно импортировать в файл LoginPage. js, прежде чем я начну работать?

У меня есть мое "приложение. js", как указано ниже

// importing dependencies
import React,{Component} from 'react';
import { StyleSheet, Text, View,Button } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import {createStackNavigator} from '@react-navigation/stack'


// importing screens
import LoginPage from './LoginPage'
import ControlScreen from './ControlScreen'
import UpdateProfile from './UpdateProfile'
import GetDetails from './GetDetails'


// creating stack navigator
const StackNav = createStackNavigator();

export default class App extends Component {

  constructor(){
    super()

    this.state={
      SignedIn : 0
    }
  }

  SignedInChecker= ()=>{

    if(this.state.SignedIn===0){
      return({
        name : 'loginpage',
        component :LoginPage,
        Oname : 'control',
        Ocomponent :ControlScreen       
      })
    }
    else
    return({
      name : 'control',
      component :ControlScreen,
      Oname : 'loginpage',
      Ocomponent :LoginPage,
    })
  }

  render(){
    return (      
      <NavigationContainer >
        <StackNav.Navigator initialRouteName={this.SignedInChecker().name} headerMode ='none' screenOptions ={{headerTitleAlign:'center',}}>
          <StackNav.Screen name={this.SignedInChecker().name} component={this.SignedInChecker().component} />
          <StackNav.Screen name={this.SignedInChecker().Oname} component={this.SignedInChecker().Ocomponent}/>    
          <StackNav.Screen name='UpdateProfile' component={UpdateProfile} />       
          <StackNav.Screen name='GetDetails' component={GetDetails} />    
       </StackNav.Navigator>
      </NavigationContainer>

    );
  }
}

my LoginPage. js имеет следующий код

import React, { Component } from 'react';
import {Button,View,StyleSheet,Text,SafeAreaView} from 'react-native';


import GetDetails from './GetDetails'

class LoginPage extends Component(){
 constructor(props){
   super(props)


 }
  render(){
    return(
      <SafeAreaView>
        <Text>
        <Button onPress ={()=>this.props.navigation.navigate('GetDetails')} title='go to getdetails'/ >
        </Text>
      </SafeAreaView>

    )
  }
} 
const styles = StyleSheet.create({
  container : {
    marginStart:20,
    marginTop:25,
    alignItems:'center'
      }
})

export default LoginPage;


, когда я использую expo, я получаю сообщение об ошибке () undefined не является объектом (оценивает '_this.props.navigation.navigate')

...