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

考えてみましょう。あなたのナビゲータに参照を保持するサービスを作成することです。アプリのどこからでも、そのサービスをインポートしてナビゲータにアクセスできます。それはそれを清潔かつ簡潔に保つ。

関連する問題