React native 反应导航:从操作文件导航

React native 反应导航:从操作文件导航,react-native,react-navigation,React Native,React Navigation,我是RN和JS的新手 我想在登录操作完成后导航,但无法使其工作。我用的是firebase 这是我的动作文件。它抛出一个firebase错误: export const LOGIN_USER_SUCCESS='LOGIN_USER_SUCCESS'; export const loginUserSuccess=(调度,用户)=>{ 派遣({ 类型:登录\用户\成功, 有效载荷:用户 }); this.props.navigation.navigate('groupMain');//这不起作用 };

我是RN和JS的新手

我想在登录操作完成后导航,但无法使其工作。我用的是firebase

这是我的动作文件。它抛出一个firebase错误:

export const LOGIN_USER_SUCCESS='LOGIN_USER_SUCCESS';
export const loginUserSuccess=(调度,用户)=>{
派遣({
类型:登录\用户\成功,
有效载荷:用户
});
this.props.navigation.navigate('groupMain');//这不起作用
};
我还尝试将其放入登录组件中-这可能是朝着正确方向迈出的一步,因为没有firebase错误,但什么也没有发生。因此,除了用户没有被导航到正确的屏幕之外,似乎所有的功能都可以正常工作。(我删除了上面的“这不起作用”行)

组件将接收道具(下一步){
此.onAuthComplete(下一步);
}
onAuthComplete(道具){
if(道具用户){
this.props.navigation.navigate('groupMain');
}
}
后来,我在官方文档中也发现了这一点,并尝试在我的操作中使用此代码来实现,但它抛出了一个firebase错误:

“调度-向路由器发送操作

使用dispatch向路由器发送任何导航操作。其他导航功能在后台使用dispatch

请注意,如果要分派react导航操作,应使用此库中提供的操作创建者

有关可用操作的完整列表,请参阅导航操作文档

从'react navigation'导入{NavigationActions}
const navigateAction=NavigationActions.navigate({
routeName:“配置文件”,
参数:{},
//导航可以具有嵌套的导航操作,该操作将在子路由器内运行
操作:NavigationActions.navigate({routeName:'SubfileRoute'})
})
此.props.navigation.dispatch(navigateAction)”

谢谢

我通过创建一个全局服务来处理编程导航,解决了一个类似的问题:

服务/navigator.js

从'react navigation'导入{NavigationActions};
让领航员;
导出功能设置导航器(nav){
导航器=导航;
}
导出功能导航(routeName、params){
如果(导航器){
分派(NavigationActions.navigate({routeName,params}));
}
}
导出函数goBack(){…}
导出函数重置(){…}
然后,在我的顶级组件中,我在创建导航器时存储对导航器的引用:

screens/App.js

从“../services/navigator”导入{setNavigator};
const AppNavigator=StackNavigator(…);
类应用程序扩展组件{
render(){
返回(
setNavigator(导航)}/>
);
}
}
最后,在我的操作文件(或任何需要的地方)中,我只需使用该服务发送导航操作:

操作/login.js

从“../services/navigator”导入{navigate};
导出函数loginUserSuccess(){
//在通常使用此.props.navigation.navigate()的任何位置使用navigate()
导航('NextScreen');
}