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 解决了这个问题。
我刚刚开始一个新项目并添加了一个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 解决了这个问题。