Reactjs 反应本地ex导航更改路由器

Reactjs 反应本地ex导航更改路由器,reactjs,react-native,ex-navigation,Reactjs,React Native,Ex Navigation,我在使用react native ex navigation切换页面时遇到问题: 错误:undefined不是对象(正在计算'this.props.navigator' 代码如下: import React, { Component } from 'react'; import {AppRegistry, StyleSheet, Text, View, Navigator, Button } from 'react-native'; import {createRouter, Navigatio

我在使用react native ex navigation切换页面时遇到问题: 错误:undefined不是对象(正在计算'this.props.navigator'

代码如下:

import React, { Component } from 'react';
import {AppRegistry, StyleSheet, Text, View, Navigator, Button } from 'react-native';
import {createRouter, NavigationProvider, StackNavigation, TabNavigation,TabNavigationItem as TabItem,}from '@exponent/ex-navigation';
import * as firebase from "firebase";

firebase.initializeApp(config);

import Login from 'auth/firstPage'
var Register = require('auth/register')
var Tab = require('./src/components/tab/mainTab');

const Router = createRouter(() => ({
  login: () => Login,
  register: () => Register,
  tab: () => Tab,
}));

export default class main extends Component {

  componentWillMount(){
    this.setState({ name:'login'});
  } 

  constructor(props) {
    super(props);
    this.state = {
      name: 'tab'
    };
  }

  render(){
    return(
     <NavigationProvider router={Router}>
       <StackNavigation initialRoute={Router.getRoute(this.state.name)} />
     </NavigationProvider>
   )
 }
}
import React,{Component}来自'React';
从“react native”导入{AppRegistry、样式表、文本、视图、导航器、按钮};
从“@exponent/ex-navigation”导入{createRouter,NavigationProvider,StackNavigation,TabNavigation,TabNavigationItem作为TabItem,};
从“firebase”导入*作为firebase;
firebase.initializeApp(配置);
从“auth/firstPage”导入登录名
var Register=require('auth/Register')
var-Tab=require('./src/components/Tab/mainTab');
常量路由器=创建路由器(()=>({
登录:()=>登录,
寄存器:()=>寄存器,
选项卡:()=>选项卡,
}));
导出默认类主扩展组件{
组件willmount(){
this.setState({name:'login'});
} 
建造师(道具){
超级(道具);
此.state={
名称:“选项卡”
};
}
render(){
返回(
)
}
}

这是我用来导航的代码:
this.props.navigator.push({name:'register'})

在新页面组件的另一个函数中调用this.props.navigator了吗

您需要在新页面构造函数中添加以下内容,以便访问this.props.navigator:

constructor(props){
  super(props);
  this.FUNCTION_CALL_NAV = this.FUNCTION_CALL_NAV.bind(this);
}

FUNCTION_CALL_NAV() {
  this.navigator.push({name: 'register'});
}

这是可行的,但现在它给了我一个错误:路由为空或格式不正确。我建议您在根文件夹Route.js中创建一个单独的文件,并将所有路由放在其中。然后在每个组件的顶部,只要您需要使用路由器功能,就可以从“Route”导入路由。