"undefined не является объектом (оценивает" Component.router ")" при запуске приложения реагирования-навигации котельной плиты - PullRequest
0 голосов
/ 03 июня 2019

Я новичок в реакции-родной и хотел попробовать реагировать-навигации.Но когда я пытаюсь запустить базовое приложение, оно выдает сообщение «undefined не является объектом (оценивает« Component.router) »».Пожалуйста, помогите

Вот снимок экрана с ошибкой https://i.gyazo.com/fa89defeff8bef894f509f1511f9b1ae.png

Вот единственное, что я изменил в проекте по умолчанию, за исключением установки реакции-навигации и реагирования-нативного жеста-обработчика

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,

});```


Ответы [ 3 ]

0 голосов
/ 03 июня 2019

кажется нормально, но вы забыли импортировать MainScreen

import { MainScreen } from '..pathname'
0 голосов
/ 03 июня 2019

В вашем коде есть две проблемы

(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);
0 голосов
/ 03 июня 2019

В вашем коде вы обращаетесь к SwitchNavigator до его объявления.

let и const переменные могут быть доступны только после их объявления.

Пример:

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

источник: MDN документы

При этом ваш код должен быть:

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);

...