2017-07-26 52 views
1

我真的無法讓我的導航工作。我正在使用react-navigation(StackNavigator)。未定義不是一個對象(評估'_this2.props.navigation.navigate') - 反應本地

這是我的結構: http://i.imgur.com/IKExx9g.png

我的導覽功能HomeScreen.js:我從HomeScreen.js瀏覽到NewScreen.js沒有問題。

App.js:

import React from 'react'; 
import { 
    StatusBar, AppRegistry 
} from 'react-native'; 
import {StackNavigator} from 'react-navigation'; 
import {HomeScreen} from './screens/HomeScreen'; 
import AboutScreen from "./screens/AboutScreen"; 
import NewScreen from "./screens/NewScreen"; 
import CalendarScreen from "./screens/CalendarScreen"; 
import AddAgendaScreen from "./screens/AddAgendaScreen"; 

const SimpleApp = StackNavigator({ 
    Home: {screen: HomeScreen}, 
    About: {screen: AboutScreen}, 
    New: {screen: NewScreen}, 
    Calendar: {screen: CalendarScreen}, 
    AddAgenda: {screen: AddAgendaScreen} 
}); 

console.disableYellowBox = true; 
StatusBar.setHidden(true); 
export default SimpleApp; // Export root navigator as the root component 

Homescreen.js(工作):

export class HomeScreen extends React.Component { 
    static navigationOptions = ({navigation}) => { 
    const {state, navigate} = navigation; 
    return { 
     title: 'eXopera' 
    }; 
    }; 

    constructor() { 
    super(); 
    this.state = { 
     address: [], 
     refreshing: false, 
     page: 1, 
     lastPage: 1, 
     loading: true, 
     listOpacity: 0, 
    }; 
    } 

    render() { 
    return (
     <ScrollableTabView style={{backgroundColor: '#fff'}} renderTabBar={() => <DefaultTabBar />}> 
     <View style={{flex: 1, backgroundColor: '#fff'}} tabLabel="Adressen"> 
      <Button color="#33cd5f" title="NEW" 
      onPress={() => this.props.navigation.navigate('New') }/> 
     </View> 
     </ScrollableTabView> 
    ); 
    } 
} 

然後是另一個組件調用CalendarScreen.js(這裏我也嘗試導航到NewScreen.js),即使我完全複製並粘貼HomeScreen.js中的代碼,我也無法瀏覽。它總是給我「未定義不是一個對象(評估'_this2.props.navigation.navigate')」。

我真的不知道我現在能做什麼..一直在掙扎幾個小時。

在此先感謝!

+0

嘗試刪除'console.disableYellowBox'以查看是否收到任何預警。同樣在什麼時候你會得到錯誤。是否當你點擊NewScreen中的按鈕? –

+0

這是我從NewScreen中點擊按鈕的時候。我已經移除'console.disableYellowBox'而沒有成功:沒有警告。 –

+0

就我所知,您發佈的代碼沒有任何問題。你可以發佈NewScreen.js嗎? –

回答

5

除了反應導航,我還使用react-native-scrollable-tab-view

我已經通過的標籤導航,通過導航道具解決它:

<CalendarScreen navigation={this.props.navigation} tabLabel="Agenda"/>

然後你就可以在其他部件this.props.navigation訪問它。

0

這聽起來像你的新屏幕沒有註冊到應用程序導航器,所以沒有navigation道具。你的構造應該是這樣的:

const SimpleApp = StackNavigator({ 
    Home: { screen: HomeScreen }, 
    New: { screen: NewScreen }, // Add this 
}); 
+0

它已註冊:[,更新OP與App.js文件的代碼!抱歉,完全忘了添加App.js代碼。 –

+0

你能發佈NewScreen.js代碼嗎? – aajiwani

+0

https://gist.github。 COM的/ dev/b4f031980c1fd7862b23b0edfdc62963 –

相關問題