React导航中的Nested Navigator的重置堆栈



我在导航器内的导航器中嵌套了一个屏幕。

const AppNavigator = createSwitchNavigator({
AuthLoading,
MainNavigator,
AuthNavigator
},
{
initialRouteName: 'AuthLoading'
});
const AuthNavigator = createStackNavigator({
VerificationNavigator,
OtpVerificationStack
},
{
initialRouteName: 'VerificationNavigator',
header: null,
headerMode: 'none'
});

appNavigator首先加载authnavigator,然后从verificationnavigator(第二屏幕)i使用导航道具导航到OtpverificationStack。

const OtpVerificationStack = createSwitchNavigator({
OTPLoading,
SignupNavigator,
MainNavigator
},
{ 
initialRouteName: 'OTPLoading',
});

在OtpverificationStack中,Flow SignupNavigator首先加载。

const SignupNavigator = createStackNavigator({
FirstName,
LastName,
Email
},
{
header: null,
headerMode: 'none'
});

屏幕名称由Google登录组成,成功登录后,我想转到Mainnavigator或它的屏幕" Home"。我尝试了

  const resetAction = StackActions.reset({
  index: 0,
  key: OtpVerificationStack,
  actions: [
    NavigationActions.navigate({ routeName: 'Home' })
  ]
  });
  this.props.navigation.dispatch(resetAction);

但这似乎不起作用。它无能为力!

编辑:我尝试在Asyncstorage和OtploadingScreen中设置令牌,以检查一个令牌。因此,从本质上讲,我必须将其重置回OtpverificationStack,我可以通过保持关键来做到这一点:null,但我不知道这是否是一种很好的方法。

我也面临着这种问题并通过此流程解决。

当您在流中时,您可以重置stacknavigator。

stack1:

屏幕1

屏幕2

屏幕3 ...

flow屏幕1->屏幕2->屏幕3(现在如果要重置它将起作用)。

当您要重置stack1并导航到stack2初始屏幕时,请尝试以下内容:

navigateToStack(stackName,routeName,params){
        const navigateAction = NavigationActions.navigate({
            routeName: stackName,
            action: NavigationActions.navigate({
                routeName: routeName,
                params: params,
            })
        });
        this.props.navigation.dispatch(navigateAction);
    }

您只需提供堆栈名,正确的屏幕路由。它将自动回到家。

this.navigateToStack(MainTab,home,{item:item}):

相关内容

  • 没有找到相关文章

最新更新