在不使用Redux的情况下,如何使用react-navigation 选项卡导航器检测选项卡更改?

我知道我需要以某种方式使用onNavigationStateChange,但我不知道如何更新当前视图.

export default () => <MyTabNav
    ref={(ref) => { this.nav = ref; }}
    onNavigationStateChange={(prevState, currentState) => {
        //call function on current view
    }}
/>;

推荐答案

export default () => <MyTabNav
    ref={(ref) => { this.nav = ref; }}
    onNavigationStateChange={(prevState, currentState) => {
       const getCurrentRouteName = (navigationState) => {
         if (!navigationState) return null;
         const route = navigationState.routes[navigationState.index];
         if (route.routes) return getCurrentRouteName(route);
         return route.routeName;
       };
    global.currentRoute = getCurrentRouteName(currentState);
  }}
/>;

如果您不想使用redux,这就是存储当前路由全局信息的方式,这样您既可以检测到选项卡更改,也可以判断哪个选项卡现在处于活动状态.

React-native相关问答推荐

ios 中节列表中的scrollToLocation 不起作用.在 Android 上,列表滚动回索引 0,但在 ios 上不会发生同样的情况

React Native 入门元素Bundle 失败,出现 Unexpected Token 错误

TypeError:undefined is not an object(判断'navigator.geolocation.requestAuthorization')

React Native Card Carousel 视图?

如何以编程方式在 react-native 中截屏

错误:安装 react-native-elements 后无法识别字体系列 Material Design 图标?

如何在 React Native 中使用断点进行调试

使用 create-react-native-app 创建了一个应用程序,如何将其发布到 Google Play store ?

FlatList contentContainerStyle -> justifyContent: 'center' 导致滚动问题

React-Native 应用程序中来自 Babel 的未知选项错误

如何渲染多行文本组件,行间有白色间隙

SyntaxError: const 声明中缺少初始化程序

在本react-native中具有异步和等待的箭头函数

ScrollView visible Scroll Bar

组件div的视图配置 getter 回调必须是一个函数(收到 undefined)

未计算文件的 React-Native Bundle Error 错误 SHA-1

加载远程图像失败后加载本map像

使用 React Native 一次启动多个 Animated.timing

列之间的 React Native FlatList 分隔符

react-native iOS 应用在部署后不显示静态/本地资源