0

我想從我的後端類反應本土屏幕這樣間導航:反應本土屏幕之間進行導航從非組件類

var self = this; 
firebase.auth().onAuthStateChanged((user) => { 
    if (user) { 
    self.setState({ 
     userID: user.uid, 
    }) 
    } else{ 
     self.props.navigation.navigate("Login"); 
     } 
}); 

我的後端類不是一個組成部分,因此不導入我正在使用的堆棧導航器。我收到一個錯誤,說'self.props.navigation不是一個對象'。

有誰知道我可以解決這個問題?由於

回答

0

一個不那麼好的做法是定義Navigator爲您的應用程序實例的靜態/類變量:

const MyNavigator = StackNavigator(...); 

export default class MyApp extends Component { 
    render() { 
     return <MyNavigator ref={(ref) => MyApp.Navigator = ref}/> 
    } 
} 

那麼你就可以訪問你的導航儀,它的道具和功能,任何你想要的! (例如派遣回事件):

import MyApp from '...'; 
MyApp.Navigator.dispatch(NavigationActions.back()); 
0

我個人不導航行動然而在該級別發生的球迷,有時是必要的。從@Dusk的答案擴展到一個模式,讓我知道這有助於解決這個問題。你可以在這裏找到它
https://github.com/react-community/react-navigation/issues/1439#issuecomment-303661539

這個想法是,你創建一個服務,持有引用你的導航。現在,您可以從應用中的任意位置導入該服務並訪問您的導航器。它保持乾淨簡潔。