Undefined不是对象React Native StackNavigator

时间:2018-06-04 22:46:07

标签: react-native react-native-android react-native-navigation stack-navigator

我一直试图让一个简单的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安装的,并且正在导入到应用程序中。

发布了类似的问题,我已经尝试了他们的建议。感谢您提供的任何帮助!

2 个答案:

答案 0 :(得分:1)

如果这只是道具可能未定义,你可以检查未定义。

t_vars = tf.trainable_variables()
d_vars = [var for var in t_vars if 'this_' in var.name]
clip_D = [p.assign(tf.clip_by_value(p, -1, 1)) for p in d_vars]

假设在某些时候const { navigate } = this.props.navigation || {}; 是在渲染中定义的,上面应该是安全的。您可以尝试记录它,看它是否总是未定义或在某个时刻定义。

navigation

输出可能是......

console.log(navigate)

答案 1 :(得分:0)

您可以在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);