Получить название предыдущего маршрута, чтобы вернуться - PullRequest
1 голос
/ 16 октября 2019

У меня есть вложенные стеки в моем приложении. С двумя разными заголовками.

У меня есть reset, но это просто отправляет пользователя обратно на домашний экран независимо от того. Как мне получить предыдущий маршрут?

  resetForm() {
    const { dispatch } = this.props.navigation;

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

Навигатор приложений:

const config = {
    contentOptions: {
        activeTintColor: "#e91e63",
        inactiveTintColor: "#ffffff",
        itemStyle: {
            flexDirection: "row-reverse"
        }
    },
    drawerWidth: 300,
    overlayColor: "#003366",
    drawerPosition: "right",
    drawerBackgroundColor: "#009999",
    transparentCard: true,
    cardStyle: {
        backgroundColor: "transparent",
        opacity: 1
    },
    transitionConfig: () => ({
        containerStyle: {
            backgroundColor: "transparent"
        }
    })
};

const withHeader = (
    screen: Function,
    routeName: string,
    Header
): StackNavigator =>
    createStackNavigator(
        {
            [routeName]: {
                screen,
                navigationOptions: ({ routeName, props }) => ({
                    header: props => <Header {...props} />
                })
            }
        },
        {
            initialRoute: "Home",
            transparentCard: true,
            cardStyle: {
                backgroundColor: "transparent",
                opacity: 1
            },
            transitionConfig: () => ({
                containerStyle: {
                    backgroundColor: "transparent"
                }
            })
        }
    );

const routes = {
    VideoEpisodes: {
        screen: withHeader(VideoEpisodesScreen, "Video Episodes", DrawerHeader)
    },
    TestYourself: {
        screen: withHeader(TestYourselfScreen, "Test Yourself", DrawerHeader)
    },
    MyResults: {
        screen: withHeader(MyResultsScreen, "My Results", DrawerHeader)
    },
    BookmarkedVideos: {
        screen: withHeader(
            BookmarkedVideosScreen,
            "Bookmarked Videos",
            DrawerHeader
        )
    },
    About: {
        screen: withHeader(AboutScreen, "About", DrawerHeader)
    }
};

const NestedDrawer = createDrawerNavigator(routes, config);

const MainStack = createStackNavigator(
    {
        Home: {
            screen: HomeScreen,
            navigationOptions: ({ props }) => ({
                header: props => <BasicHeader {...props} />
            })
        },
        Drawer: {
            screen: NestedDrawer,
            navigationOptions: ({ props }) => ({
                header: () => null
            })
        },
        VideoPlayer: {
            screen: VideoPlayerScreen,
            navigationOptions: ({ props }) => ({
                header: props => <BasicHeader {...props} />
            })
        }
    },
    {
        initialRoute: "Home",
        transparentCard: true,
        cardStyle: {
            backgroundColor: "transparent",
            opacity: 1
        },
        transitionConfig: () => ({
            containerStyle: {
                backgroundColor: "transparent"
            }
        })
    }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...