2017-03-09 56 views
0

嘿傢伙我有一個問題在切換與反應天然前導航頁面: 錯誤:未定義不是一個對象(計算「this.props.navigator」陣營天然前導航chnaging路由器

這是驗證碼:

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> 
    ) 
} 
} 

這是我用來導航代碼:this.props.navigator.push({name:'register'})

回答

0

你叫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'}); 
} 
+0

那是工作,但現在它給我一個錯誤:路徑爲空或畸形。 – user3316092

+0

我建議你在根文件夾中創建一個名爲route.js的獨立文件,並將其中的所有路由。然後在每個組件的頂部,只要需要使用路由器功能,只需從'路由'導入路由。 – MattYao