Undefined 不是对象 React Native StackNavigator
2018-06-04
1640
我一直在尝试让一个简单的 React Native StackNavigation 示例应用运行,但是我一直收到
TypeError:未定义不是对象(评估“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 { navigation } = this.props.navigation;
声明上。删除此行确实允许应用部署,但没有我预期的标题。
StackNavigator
是使用 NPM 安装的,并且正在正常导入到应用中。
有类似的问题发布,我已经尝试了他们的建议。感谢您提供的任何帮助!
2个回答
您可以在 StackNavigator 的选项上添加 initialRouteName。试试这个。
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);
ridoansaleh
2018-06-05
如果这只是因为 prop 有可能未定义,那么您只需检查未定义即可。
const { navigate } = this.props.navigation || {};
假设在某个时刻
navigation
在 render 中定义,则上述内容应该可以安全使用。您可以尝试记录它并查看它是否始终未定义或在某些时候被定义。
console.log(navigate)
输出可能是...
undefined
undefined
//defined
Dan
2018-06-05