后退导航循环

时间:2019-06-29 08:45:27

标签: react-navigation react-navigation-stack

我在React-Navigation中遇到问题,无法从后循环循环退出。

我在App.js中定义了一个StackNavigator

const AppNavigator = createAppContainer(createStackNavigator(
    {
        Splash: { screen: Splash },
        Home: { screen: Home, backBehavior: true },
        Servers: { screen: Servers },
        Settings: { screen: Settings },
        Events: { screen: Events },
        Traffic: { screen: Traffic },
        Friends: { screen: Friends },
        UserProfile: { screen: UserProfile },
        [...]
    })

场景:

  • 用户打开应用,第一个途径是“启动”屏幕
  • 加载初始屏幕后(我做了一些准备应用程序的操作),自动导航到首页
  • 用户点击底部栏图标以查看朋友个人资料
  • 使用this.props.navigation.navigate('Friends')导航到朋友屏幕
  • 朋友屏幕加载并显示朋友列表
  • 用户点击朋友以查看其个人资料详细信息

要使用“好友”导航到单个个人资料详细信息,请使用

goToProfile(steamUser)
    {
        this.navigateWithParams('UserProfile', { steamID: steamUser.steamid, goBack: 'Friends' })
    }
navigateWithParams(routeName, params)
    {
        /*var navigationParams = {
            routeName: routeName,       
            params: params,
            key: routeName + uuid()
       };

       console.warn(navigationParams);

        //this.props.navigation.push({ routeName: routeName, params: params, key: uuid() });
        const navigateAction = NavigationActions.navigate(navigationParams);

        this.props.navigation.dispatch(navigateAction);*/

        this.props.navigation.push(routeName, params);
    }

(对不起,我已经尝试了许多解决方案)。

  • 用户在加载了配置文件的配置文件详细信息上着陆(正常工作,在登录屏幕中收到了参数)
  • 标题中“后退”按钮上的“用户”标签可返回“朋友”屏幕
  • 导航回到“朋友”屏幕

要导航回去,我编写了一个实用程序功能来管理带参数的屏幕:

navigateBack() {


        if (this.props.navigation.state && this.props.navigation.state.params && this.props.navigation.state.params.goBack)
        {
            if (this.props.navigation.state.params.goBackParams)
                this.props.navigation.navigate(this.props.navigation.state.params.goBack, this.props.navigation.state.params.goBackParams);
            else
                this.props.navigation.navigate(this.props.navigation.state.params.goBack);
        }
        else
        {
            this.props.navigation.goBack();
        }
    }
  • 用户登陆“朋友”屏幕
  • 用户点击标题中“朋友”屏幕上的“后退”按钮
  • 用户返回到UserProfile屏幕

我尝试注释if并仅保留this.props.navigation.goBack(),结果相同。

最后一步是我正在考虑的错误。

我想回到首页,因为对我来说导航堆栈应该是:

主页>朋友>用户个人资料(带参数)>主页

我在冤What什么?也许我正在使用wronly .navigate或.push或.goBack?

希望有人可以。

谢谢

0 个答案:

没有答案