【问题标题】:tabBarOnPress not working in react navigation tabs in react-nativetabBarOnPress 在 react-native 中的反应导航选项卡中不起作用
【发布时间】:2018-05-05 09:39:30
【问题描述】:

我正在使用嵌套导航抽屉>选项卡>堆栈导航器。

导航器正在工作,但是当我点击选项卡项时,它会抛出以下错误

undefined 不是一个对象(评估 '_ref4.route') _getOnPress TabView.js:110:44 _handleOnPress TabBarTop.js:127:31 onPress TabBar.js:466:33 _callTimer JSTimers.js:156:15 呼叫计时器 JSTimers.js:411:17 __callFunction 消息队列.js:302:47 消息队列.js:116:26 __警卫 MessageQueue.js:265:6 callFunctionReturnFlushedQueue MessageQueue.js:115:17

我被困在这里我尝试了很多东西但没有成功

这是我的代码

DrawerNav.js

import React, { Component } from 'react';
import { DrawerNavigator} from 'react-navigation';
import Icon from "react-native-vector-icons/FontAwesome";
import stackNav from './stackNav';


const Drawer = DrawerNavigator({
    DrawerItem1: {
        screen: stackNav,
        navigationOptions: {
            drawerLabel: "Drawer Item 1",
            drawerIcon: ({ tintColor }) => <Icon name="rocket" size={24} />
        },
    },
    DrawerItem2: {
        screen: stackNav,
        navigationOptions: {
            drawerLabel: "Drawer Item 2",
            drawerIcon: ({ tintColor }) => <Icon name="rocket" size={24} />
        },
    }
});


export default Drawer;

TabNav.js

import React, { Component } from 'react';
import { TabNavigator, TabView } from 'react-navigation'
import Icon from "react-native-vector-icons/FontAwesome";
import MainScreen from './screens/MainScreen';

const tabNav = TabNavigator({
    TabItem1: {
        screen: MainScreen,
        navigationOptions: {
            tabBarLabel:"Tab One",
            tabBarIcon: ({ tintColor }) => <Icon name={"glass"} size={30} color={tintColor} />
        }
    },

    TabItem2: {
        screen: MainScreen,
        navigationOptions: {
            tabBarLabel:"Tab Two",
            tabBarIcon: ({ tintColor }) => <Icon name={"glass"} size={30} color={tintColor} />
        }
    },

    TabItem3: {
        screen: MainScreen,
        navigationOptions: {
            tabBarLabel:"Tab Three",
            tabBarIcon: ({ tintColor }) => <Icon name={"glass"} size={30} color={tintColor} />
        }
    }

    ///... add more tabs here

}, {
        tabBarPosition: 'bottom',
        tabBarOptions: {
            activeTintColor: '#222'
        },
});


export default tabNav;

stackNav.js

import React, { Component } from 'react';
import { TouchableOpacity } from 'react-native';
import { StackNavigator} from 'react-navigation'
import IOSIcon from "react-native-vector-icons/Ionicons";
import DetailScreen from './screens/DetailScreen';
import MainScreen from './screens/MainScreen';
import tabNav from './tabNav'

const stackNav = StackNavigator({
    Main: {
        screen: tabNav,
        navigationOptions:({navigation}) => ({
            title: "Main",
            headerLeft:(
              <TouchableOpacity onPress={() => navigation.navigate("DrawerOpen")}>
                <IOSIcon name="ios-menu" size={30} />
              </TouchableOpacity>
            ),
            headerStyle: { paddingRight: 10, paddingLeft: 10 },
        })
    },
    Detail: {
        screen: DetailScreen,
        navigationOptions: (props) => ({
            title: "Detail",
        })
    }
})

export default stackNav;

【问题讨论】:

    标签: javascript reactjs react-native react-navigation tabnavigator


    【解决方案1】:

    我在使用 TabNavigator 时遇到同样的错误。

    我还执行了官方的 react-navigation 示例 (https://github.com/react-community/react-navigation/blob/master/examples/NavigationPlayground/js/SimpleTabs.js),但没有成功(同样的错误)。

    我的猜测是这是最新版本的 Expo/React Native 的错误。

    你用的是什么版本?

    我正在使用:

    "dependencies": {
        "expo": "^22.0.2",
        "react": "16.0.0-beta.5",
        "react-native": "^0.49.5",
        "react-navigation": "^1.0.0-beta.20"
      }
    

    已确认:从 Create React Native App 中弹出可以解决问题。 因此,这似乎是 Create React Native App 或 Expo 上的一个错误。

    【讨论】:

    • “依赖项”:{“axios”:“^0.17.1”,“mobx”:“^3.3.1”,“mobx-react”:“^4.3.4”,“反应": "16.0.0", "react-native": "0.50.3", "react-native-vector-icons": "^4.4.2", "styled-components": "^2.2.3", “反应导航”:“反应社区/反应导航#master”}
    • 我没有使用博览会
    • 我通过升级依赖项来解决这个问题。现在我正在使用:expo@22.0.4、react@16.0.0-beta.5、react-native@0.49.5 和 react-navigation@1.0.0-beta.21。尝试使用 react-navigation@1.0.0-beta.21。
    • 使用 react-navigation@1.0.0-beta.21 版本解决了这个问题。谢谢
    • 这适用于 react-navigation 3.0 版吗?我正在尝试相同的语法,但无法运行。请告诉您是否有任何关于在bottomTabNavigator中刷新当前选择的标签的建议。
    猜你喜欢
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多