TabNavigator 不切换选项卡。 navigation.navigate 不是函数

TabNavigator not switching tabs. navigation.navigate is not a function

我刚刚开始一个新项目并添加了一个TabNavigator。当我点击任一选项卡时,我收到一条红色错误消息:

"navigation.navigate is not a function(In 'navigation/navigate(navigateion.state.routes[index].routeName', 'navigation.navigate' is undefined)"

如果我更改初始路线,每个选项卡都会在屏幕上正确显示,并在屏幕底部突出显示正确的选项卡。

export default TabNavigator(
  {
    Home: { screen: HomeScreen },
    Card: { screen: CardScreen },
    Schedule: { screen: ScheduleScreen },
  },
  {
    initialRouteName: 'Home',
  }
);

这就是我用来更改 Tab 的内容。

这是我的 customeTab 的定义

const customeTab = ({ navigation }) => {

下面是导航代码:

const routes = navigation.state.routes;
            {routes.map((route, index) => {
                return (
                    <TouchableOpacity
                        activeOpacity={1.0}
                        onPress={() => {
                            navigation.navigate(route.key);
                        }
                        }
                        style={styles.tab}
                        key={route.key}
                    >
         // do you stuff to show title and image.
                    </TouchableOpacity>);
            })
            }

我认为问题出在您的导航中。

import { TabNavigator } from 'react-navigation';
import HomeScreen from "./Home"
import SettingsScreen from "./Settings"

export default TabNavigator({
  Home: { screen: HomeScreen },
  Settings: { screen: SettingsScreen },
});

如果你想将一个页面移动到另一个页面,你必须使用导航方法。

在选项卡之间跳转 从一个选项卡切换到另一个选项卡有一个熟悉的 API — this.props.navigation.navigate.

import { Button, Text, View } from 'react-native';

class HomeScreen extends React.Component {
  render() {
    return (
      <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
        <Text>Home!</Text>
        <Button
          title="Go to Settings"
          onPress={() => this.props.navigation.navigate('Settings')}
        />
      </View>
    );
  }
}

class SettingsScreen extends React.Component {
  render() {
    return (
      <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
        <Text>Settings!</Text>
        <Button
          title="Go to Home"
          onPress={() => this.props.navigation.navigate('Home')}
        />
      </View>
    );
  }
}

单击此 link。这是一份官方文档,可以为您提供帮助。

将 React-navigation 从 2.0.0 降级到 1.0.3 解决了这个问题。