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

这个想法是,你创建一个服务,持有引用你的导航。现在,您可以从应用中的任意位置导入该服务并访问您的导航器。它保持干净简洁。