为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Smart猫小萌 2021-06-15 17:00:18
我是 react-native 的新手,想尝试 react-navigation。但是当我尝试运行一个基本的应用程序时,它给了我'未定义不是一个对象(评估'Component.router)'错误。请帮忙这是错误的屏幕截图 https://i.gyazo.com/fa89defeff8bef894f509f1511f9b1ae.png这是我在默认项目中唯一改变的,除了安装 react-navigation 和 react-native-gesture-handlerimport 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,});```
查看完整描述

3 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

您的代码中有两个问题


(1) 您正在尝试SwitchNavigator在声明之前访问。(2) 你正在做MainScreen : MainScreen,这会导致错误。


const SwitchNavigator = createSwitchNavigator({

  MainScreen,

});

或者


// optionally pass an object to your route, with screen, navigation options

const SwitchNavigator = createSwitchNavigator({

  MainScreen: { screen: MainScreen },

});


const AppNavigator = createAppContainer(SwitchNavigator);


查看完整回答
反对 回复 2021-06-18
?
温温酱

TA贡献1752条经验 获得超4个赞

在您的代码中,您声明之前访问 SwitchNavigator 。

letconst变量只能声明之后才能访问。

例子:

console.log(a); // Uncaught ReferenceError: Cannot access 'a' before initialization
const a = 10;

话虽如此,您的代码应该是:


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 SwitchNavigator = createSwitchNavigator({

  MainScreen : MainScreen,

});


const AppNavigator = createAppContainer(SwitchNavigator);


查看完整回答
反对 回复 2021-06-18
?
白衣非少年

TA贡献1155条经验 获得超0个赞

似乎没问题,除非您忘记导入 MainScreen

import { MainScreen } from '..pathname'


查看完整回答
反对 回复 2021-06-18
  • 3 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信