React native CreateBoottomTabNavigator中的初始路由问题

React native CreateBoottomTabNavigator中的初始路由问题,react-native,jsx,React Native,Jsx,在我的BottomTabNavigator中,我有一个概览选项卡。当我单击它时,它会显示overview选项卡的初始路线。从这里,我可以点击查看更多详细信息。这将路由到另一个屏幕。让我们称之为(B) 我的问题是,如果我在概览选项卡内的路线/页面(B),然后我单击另一个选项卡,返回到概览显示路线/页面(B),但如果我更改选项卡并返回到它,我希望它显示路线/页面(a) 我该怎么做 这是我的OverviewStack.js import OverviewStack from "./overv

在我的
BottomTabNavigator
中,我有一个概览选项卡。当我单击它时,它会显示overview选项卡的初始路线。从这里,我可以点击查看更多详细信息。这将路由到另一个屏幕。让我们称之为(B)

我的问题是,如果我在概览选项卡内的路线/页面(B),然后我单击另一个选项卡,返回到概览显示路线/页面(B),但如果我更改选项卡并返回到它,我希望它显示路线/页面(a)

我该怎么做

这是我的OverviewStack.js

import OverviewStack from "./overviewStack";
import { createStackNavigator } from "react-navigation";
.
.
.
const OverviewStack = createStackNavigator(
  {
    ...OverviewRoutes,
  },
  {
    initialRouteName: "Overview",
    resetOnBlur: true,
    navigationOptions: ({ navigation }) => ({
      ...SharedHeader(navigation),
    }),
  }
);
tabNavigator.js

import { createBottomTabNavigator } from "react-navigation";
.
.
.

export default createBottomTabNavigator(
  {
    Overview: {
      resetOnBlur: true,
      screen: OverviewStack,
      navigationOptions: {
        title: "Home",
      },
    },
    Averages: {
      resetOnBlur: true,
      screen: TrackStack,
      navigationOptions: {
        title: "Track",
      },
    },


resetOnBlur
在最新(5.x版)的React导航中不可用。它已被弃用,并引入了一个新的类似功能选项
unmontonblur

在这里,我为您制作了一款世博小吃:

import*as React from'React';
从“react native”导入{Text,View};
从'@react-navigation/native'导入{NavigationContainer};
从“@react navigation/bottom tabs”导入{createBottomTabNavigator};
从'@react navigation/stack'导入{createStackNavigator,StackActions};
从'@react-navigation/native'导入{Link};
const Stack=createStackNavigator();
函数概览堆栈(){
返回(
);
}
功能主屏幕(){
返回(
回家!
);
}
函数概览屏幕(){
返回(
概述!
详细说明
);
}
函数DetailScreen(){
返回(
细节
);
}
const Tab=createBottomTabNavigator();
函数MyTabs(){
返回(
);
}
导出默认函数App(){
返回(
);
}
如果您注意到,我正在设置要在模糊上卸载的屏幕选项,使用
unmountOnBlur:true

一个可能不希望出现的副作用是,如果您在Overview选项卡下的DetailScreen上,并且您碰巧再次点击Overview选项卡,它会将您带回OverviewScreen(因为DetailScreen已弹出)。这可能是您期望的用户体验,也可能不是。但是,还有另一种自定义行为的方法,可以通过收听
Tab.Screen
上的各种事件,如下所述

如果您想获得更多乐趣,您可以在
选项卡屏幕上添加一个侦听器,并执行更多相关操作,请参见此处:

({
tabPress:e=>{
//防止默认操作
e、 预防默认值();
//对“导航”对象执行一些操作
导航。导航(“另一个地方”);
},
模糊:()=>{
//在这里做事
},
})}
/>

resetOnBlur
在最新(5.x版)的React导航中不可用。它已被弃用,并引入了一个新的类似功能选项
unmontonblur

在这里,我为您制作了一款世博小吃:

import*as React from'React';
从“react native”导入{Text,View};
从'@react-navigation/native'导入{NavigationContainer};
从“@react navigation/bottom tabs”导入{createBottomTabNavigator};
从'@react navigation/stack'导入{createStackNavigator,StackActions};
从'@react-navigation/native'导入{Link};
const Stack=createStackNavigator();
函数概览堆栈(){
返回(
);
}
功能主屏幕(){
返回(
回家!
);
}
函数概览屏幕(){
返回(
概述!
详细说明
);
}
函数DetailScreen(){
返回(
细节
);
}
const Tab=createBottomTabNavigator();
函数MyTabs(){
返回(
);
}
导出默认函数App(){
返回(
);
}
如果您注意到,我正在设置要在模糊上卸载的屏幕选项,使用
unmountOnBlur:true

一个可能不希望出现的副作用是,如果您在Overview选项卡下的DetailScreen上,并且您碰巧再次点击Overview选项卡,它会将您带回OverviewScreen(因为DetailScreen已弹出)。这可能是您期望的用户体验,也可能不是。但是,还有另一种自定义行为的方法,可以通过收听
Tab.Screen
上的各种事件,如下所述

如果您想获得更多乐趣,您可以在
选项卡屏幕上添加一个侦听器,并执行更多相关操作,请参见此处:

({
tabPress:e=>{
//防止默认操作
e、 预防默认值();
//对“导航”对象执行一些操作
导航。导航(“另一个地方”);
},
模糊:()=>{
//在这里做事
},
})}
/>

只需将
resetOnBlur
添加到
createBottomTabNavigator
这样的选项中

从'react navigation tabs'导入{createBottomTabNavigator,BottomTabBar};
常量TabBarComponent=(道具)=>;
const TabScreens=createBottomTabNavigator(
{
//其他屏幕
},
{
tabBarComponent:(道具)=>(
),
resetOnBlur:true//在此处添加
}
);

只需将
resetOnBlur
添加到
createBottomTabNavigator
这样的选项中

从'react navigation tabs'导入{createBottomTabNavigator,BottomTabBar};
常量TabBarComponent=(道具)=>;
const TabScreens=createBottomTabNavigator(
{
//其他屏幕
},
{
tabBarComponent:(道具)=>(
),
resetOnBlur:true//在此处添加
}
);

同样的事情它不起作用。它不起作用,当我转到我的主屏幕,然后在该屏幕上拉一个视图,并尝试更改选项卡并返回时,它将停留在最后一个屏幕上,而不是默认为主屏幕。您能否将一个可复制的示例添加到您的GitHub并与我共享,以便我可以为Youhammad Numan解决此问题,非常感谢您的帮助。我已经更新了代码以反映我的文件。同样,它不起作用。它不起作用,当我转到主屏幕,然后在该屏幕上拉一个视图,然后尝试更改选项卡并返回,它停留在最后一个屏幕上