猿问

运行样板反应导航应用程序时,“未定义不是对象(评估 'Component.router')”

我是 react-native 的新手,想尝试 react-navigation。但是当我尝试运行一个基本的应用程序时,它给了我'未定义不是一个对象(评估'Component.router)'错误。请帮忙


这是错误的屏幕截图 https://i.gyazo.com/fa89defeff8bef894f509f1511f9b1ae.png


这是我在默认项目中唯一改变的,除了安装 react-navigation 和 react-native-gesture-handler


import React, {Component} from 'react';

import {Platform, StyleSheet, Text, View} from 'react-native';

import {createAppContainer,

        createSwitchNavigator,

        createStackNavigator} from 'react-navigation';


type Props = {};

export default class App extends Component<Props> {

  render() {

    return <AppNavigator/>;

  }

}


class MainScreen extends Component{

  render(){

    return <Text>Hi</Text>

  }

}


const AppNavigator = createAppContainer(SwitchNavigator);


const SwitchNavigator = createSwitchNavigator({

  MainScreen : MainScreen,


});```


Smart猫小萌
浏览 122回答 3
3回答

牛魔王的故事

您的代码中有两个问题(1) 您正在尝试SwitchNavigator在声明之前访问。(2) 你正在做MainScreen : MainScreen,这会导致错误。const SwitchNavigator = createSwitchNavigator({&nbsp; MainScreen,});或者// optionally pass an object to your route, with screen, navigation optionsconst SwitchNavigator = createSwitchNavigator({&nbsp; MainScreen: { screen: MainScreen },});const AppNavigator = createAppContainer(SwitchNavigator);

温温酱

在您的代码中,您在声明之前访问 SwitchNavigator&nbsp;。let和const变量只能在声明之后才能访问。例子:console.log(a);&nbsp;//&nbsp;Uncaught&nbsp;ReferenceError:&nbsp;Cannot&nbsp;access&nbsp;'a'&nbsp;before&nbsp;initialization const&nbsp;a&nbsp;=&nbsp;10;话虽如此,您的代码应该是:import React, {Component} from 'react';import {Platform, StyleSheet, Text, View} from 'react-native';import {createAppContainer,&nbsp; &nbsp; &nbsp; &nbsp; createSwitchNavigator,&nbsp; &nbsp; &nbsp; &nbsp; createStackNavigator} from 'react-navigation';type Props = {};export default class App extends Component<Props> {&nbsp; render() {&nbsp; &nbsp; return <AppNavigator/>;&nbsp; }}class MainScreen extends Component{&nbsp; render(){&nbsp; &nbsp; return <Text>Hi</Text>&nbsp; }}const SwitchNavigator = createSwitchNavigator({&nbsp; MainScreen : MainScreen,});const AppNavigator = createAppContainer(SwitchNavigator);

白衣非少年

似乎没问题,除非您忘记导入 MainScreenimport&nbsp;{&nbsp;MainScreen&nbsp;}&nbsp;from&nbsp;'..pathname'
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答