Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native &引用;重置";stackNavigator,在单击另一个底部选项卡Navigator选项卡后_React Native_React Navigation_Bottomnavigationview - Fatal编程技术网

React native &引用;重置";stackNavigator,在单击另一个底部选项卡Navigator选项卡后

React native &引用;重置";stackNavigator,在单击另一个底部选项卡Navigator选项卡后,react-native,react-navigation,bottomnavigationview,React Native,React Navigation,Bottomnavigationview,我目前有以下导航模式: BottomTabNavigator export const HomePageBottomNavigator = createBottomTabNavigator( { CardListStack: { screen: CardListStack, navigationOptions: () => ({ title: 'My Cards' }) }, ClassList

我目前有以下导航模式:

BottomTabNavigator

export const HomePageBottomNavigator = createBottomTabNavigator(
{
    CardListStack: {
        screen: CardListStack,
        navigationOptions: () => ({
            title: 'My Cards'
        })
    },
    ClassListStack: {
        screen: ClassListStack,
        navigationOptions: () => ({
            title: 'My classes'
        })
    }
})
CardListStack

export const CardListStack = createStackNavigator(
{
    CardListPage: {
        screen: CardListPage
    },
    CardPage: {
        screen: CardPage,
        headerMode: 'none'
    }
},
{
    headerMode: 'none',
    navigationOptions: {
        headerVisible: false
    },
    initialRouteName: 'CardListPage'

});
export const ClassListStack = createStackNavigator(
{
    ClassesListPage: {
        screen: ClassesListPage
    },
    ClassPage: {
        screen: ClassPage,
        headerMode: 'none'
    },
    CardPage: {
        screen: CardPage,
        headerMode: 'none'
    }
},
{
    headerMode: 'none',
    navigationOptions: {
        headerVisible: false
    },
    initialRouteName: 'ClassesListPage',
});
ClassListStack

export const CardListStack = createStackNavigator(
{
    CardListPage: {
        screen: CardListPage
    },
    CardPage: {
        screen: CardPage,
        headerMode: 'none'
    }
},
{
    headerMode: 'none',
    navigationOptions: {
        headerVisible: false
    },
    initialRouteName: 'CardListPage'

});
export const ClassListStack = createStackNavigator(
{
    ClassesListPage: {
        screen: ClassesListPage
    },
    ClassPage: {
        screen: ClassPage,
        headerMode: 'none'
    },
    CardPage: {
        screen: CardPage,
        headerMode: 'none'
    }
},
{
    headerMode: 'none',
    navigationOptions: {
        headerVisible: false
    },
    initialRouteName: 'ClassesListPage',
});
所以基本上我有两个标签:第一个是关于卡片的,你可以看到你的卡片列表,然后点击查看特定卡片的详细信息。在第二个例子中,你可以找到你的类,特别是一个类,然后点击查看它的卡片


我面临的问题是,当我在CardListStack中时,我执行以下操作:打开一张卡,转到ClassListStack,然后返回CardListStack。。。这张卡还开着。当我打开一个类详细信息,更改堆栈,然后返回时,也会发生同样的事情。当我移回堆栈时,有什么方法可以“重置”堆栈吗?

我相信这是
堆栈导航器的预期行为。很多时候,您希望用户能够在特定选项卡的导航中尽可能地向下移动,并且当他们离开该选项卡并返回时,他们不会希望所有进度都丢失

然而,当我导航到一个选项卡时,我也尝试过让它“重置”,并发现解决方案令人沮丧

以下是几种方法:

  • 不要调用
    navigation.navigate('CardListStack')
    尝试更具体地描述您想要的确切屏幕,我相信这就是
    CardListPage
    因此,
    navigation.navigate('CardListPage')
    可能会完全按照您的要求进行操作。
    根据不同版本的
    react navigation
    ,我遇到了很多问题
  • 使用
    navigation.poptoop()
    。这会让你回到游戏的顶端 你现在的路线。所以在导航回后调用此
    CardListStack
    将弹出您回到
    CardListPage
    ,我认为这是 你想要什么但是,这并不理想,因为用户将看到 卡片被解除并移回原始位置的动画 列表。
  • 您还可以进入导航操作,看看可以在那里做些什么,如回答的那样

希望这些帮助之一

选项卡导航器中的所有选项卡将立即呈现,并且在切换选项卡时不会重置。您需要在tabnavigator配置上使用lazy属性,使选项卡仅在激活或单击时呈现

像这样:

export const HomePageBottomNavigator = createBottomTabNavigator(
{
    CardListStack: {
        screen: CardListStack,
        navigationOptions: () => ({
            title: 'My Cards'
        })
    },
    ClassListStack: {
        screen: ClassListStack,
        navigationOptions: () => ({
            title: 'My classes'
        })
    }
},
{
   lazy:true
}
)