react-native - 堆栈导航器标题按钮在按下时不会导航到路由
问题描述
这是我的错误:undefined is not an object (evaluating 'navigation.navigate')
我的目标是在我的 StackNavigator 中Settings
单击我的组件时导航到我的页面:LeftHeader
这是我的App.js
文件的片段:
const FeedStackNav = () => {
return (
<Stack.Navigator>
<Stack.Screen
options={{
title: "",
headerLeft: ({ navigation }) => (
<Header>
<LeftHeader onPress={() => navigation.navigate("Settings")}>
<MenuIcon fill={"#C13B1E"} />
</LeftHeader>
</Header>
),
}}
name="Feed"
component={Feed}
/>
</Stack.Navigator>
);
};
这是我在我的应用程序中呈现堆栈的方式:
<NavigationContainer theme={theme}>
<Stack.Navigator>
<Stack.Screen
options={{
headerShown: false,
}}
name=" "
component={TabNav}
/>
<Stack.Screen name="Settings" component={Settings} />
</Stack.Navigator>
</NavigationContainer>
我的LeftHeader
onPress 函数一定有问题
解决方案
我只添加了一段代码来说明如何navigation.navigate('screen')
在标题按钮上使用
<NavigationContainer>
<Stack.Navigator
screenOptions={{
headerStyle: {
backgroundColor: '#f4511e',
},
headerTintColor: '#fff',
headerTitleStyle: {
fontWeight: 'bold',
},
}}>
<Stack.Screen
name="Home"
component={HomeScreen}
options={({navigation, route}) => ({
headerRight: () => (
<TouchableOpacity onPress={() => alert('Just clicked!!')}>
<FontIcon
onPress={() => navigation.navigate('CreateSession')}
name="video-camera"
color={whitish}
size={25}
/>
</TouchableOpacity>
),
})}
/>
<Stack.Screen name="CreateSession" component={CreateSessionScreen} />
<Stack.Screen name="LiveSessions" component={LiveSession} />
</Stack.Navigator>
</NavigationContainer>
在上面的代码中观察用于访问navigation
和route
道具的回调函数
options={({navigation, route}) => ({
headerRight: () => (
<TouchableOpacity onPress={() => alert('Just clicked!!')}>
<FontIcon
onPress={() => navigation.navigate('CreateSession')}
name="video-camera"
color={whitish}
size={25}
/>
</TouchableOpacity>
),
})}
推荐阅读
- oracle - 我想从远程 PC 连接到带有 oracle DB 的主机
- python - 在python上读取txt文件的列
- java - Hibernate:在不同的会话中更新相同的对象
- python - 从批处理脚本运行的 Python 脚本,在一台 PC 上运行,在另一台 PC 上运行 IndexError
- python - 熊猫:增长的简单分析(比较)和 Fillna
- selenium - 如何从自动建议文本框中选择值?
- java - Maven 告诉我“编译中的致命错误:无效的目标版本”尽管 java 版本是正确的
- angular - 如何在离子 3 中将按钮更改为 2 个按钮 onClick
- twig - 如果在某个字段中写入数字,则显示特定图像
- python - 如何跳过文件中已经存在的行?