Я пытался заставить работать простой пример приложения React Native StackNavigation, но продолжаю получать
TypeError: undefined is not an object (evaluating 'this.props.navigation.navigate')
Я не ожидаю, что приложение будет перемещаться куда-либо на этом этапе, просто разверните его с панелью приложения и произвольным текстом.
import React, { Component } from 'react';
import {AppRegistry, Text} from 'react-native';
import {StackNavigator} from 'react-navigation';
export default class App extends React.Component {
static navigationOptions = {
title: 'Home',
};
render() {
const { navigate } = this.props.navigation;
return (
<Text> Hello World </Text>
);
}
}
const appScreens = StackNavigator({
Home: {screen: App},
})
AppRegistry.registerComponent('IntervalTimer', () => appScreens);
Ошибка сообщается в декларации const { navigate } = this.props.navigation;. И удаление этой строки позволяет приложению развернуться, но без заголовка, как я ожидал.
StackNavigator был установлен с использованием NPM и хорошо импортируется в приложение.
Есть похожие вопросы, и я попробовал их предложения. Цените любую помощь, которую вы можете предложить!





Вы можете добавить initialRouteName в опции StackNavigator. Попробуй это.
import React, { Component } from 'react';
import {AppRegistry, Text} from 'react-native';
import {StackNavigator} from 'react-navigation';
class App extends React.Component {
static navigationOptions = {
title: 'Home',
};
render() {
const { navigate } = this.props.navigation;
return (
<Text> Hello World </Text>
);
}
}
export const appScreens = StackNavigator({
Home: { screen: App }
},{
initialRouteName: Home
})
AppRegistry.registerComponent('IntervalTimer', () => appScreens);
Если дело в том, что опора может быть неопределенной, вы можете просто проверить ее на неопределенное значение.
const { navigate } = this.props.navigation || {};
Предполагая, что в какой-то момент navigation определен в рендере, использование приведенного выше должно быть безопасным. Вы можете попробовать зарегистрировать его и посмотреть, всегда ли он неопределен или определен в какой-то момент.
console.info(navigate)
Результат может быть ...
undefined
undefined
//defined