2017-05-25 57 views
1

我在React,React Native和React Navigation方面相當新穎。取得一些進展,但遇到這個問題。如何使用React Navigation導航到渲染函數之外的新屏幕,而不使用JSX?

<Button 
    text='View Details' onPress={() => 
    this.props.navigation.navigate('AccountScreen')} /> 

不過,我目前正試圖導航到一個新的屏幕在.fetch(),並且想知道什麼我需要做的:

一般情況下我做這樣的事情導航到新頁面不同。

見下面的代碼:

// AppNavigation.js: 
... 
const PrimaryNav = StackNavigator({ 
    HomeScreen: { screen: HomeScreen }, 
    AccountScreen: { screen: AccountScreen } 
}); 



// HomeScreen.js 
... 
handlePress = (navigator) => { 

    fetch('https://example.com/this/url/works' + this.state.accountName, lookUpObject).then(function(response) { 
    if(response.ok) { 

     // this does not work. 
     // returns this error: 
     // "undefined is not an object (evaluating 'navigator.navigate')" 
     navigator.navigate('AccountScreen', { "accountName": this.state.accountName }); 
    } 
    }) 

} 

render() { 
    const { navigate } = this.props.navigation; 

    reutrn (
    <ButtonCTA onPress={this.handlePress}>Go to account page</ButtonCTA> 
) 
} 

現在我得到以下錯誤: "undefined is not an object (evaluating 'navigator.navigate')"

回答

2

你只是忘了導航進入handlePress 按鈕代碼應該是這樣的:

<ButtonCTA onPress={()=>this.handlePress(this.props.navigation) }>Go to account page</ButtonCTA> 
+0

Hrm ...良好的捕獲,但我仍然得到相同的錯誤: 'E ReactNativeJS :{[TypeError:undefined不是一個對象(評估'navigator.navigate')]''。任何其他想法? – chapeljuice

+1

你也應該改變函數 'fetch('https://example.com/this/url/works'+ this.state.accountName,lookUpObject).then(function(response){' 使用箭頭語法 – BTMPL

+0

好吧我其實有一些事情需要改變,但我會將其標記爲答案,因爲它基本上讓我在那裏。我的StackNavigator中有一個拼寫錯誤(呃)和我通過'導航'而不是'導航器。希望這可以幫助別人! – chapeljuice

相關問題