我一直在尝试让一个简单的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安装的,并且正在导入到应用程序中。
有类似的问题张贴,我已经尝试了他们的建议。感谢你能提供的任何帮助!
发布于 2018-06-05 11:30:03
您可以在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);发布于 2018-06-05 11:37:45
如果这仅仅是因为道具可能有未定义的机会,那么您可以只检查是否未定义。
const { navigate } = this.props.navigation || {};假设在某个时刻navigation是在render中定义的,那么使用上面的代码应该是安全的。您可以尝试记录它,看看它是否总是未定义的,或者在某个时候定义的。
console.log(navigate)输出可能是...
undefined
undefined
//definedhttps://stackoverflow.com/questions/50689765
复制相似问题