2017-07-26 53 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 –

相关问题