我想使用TouchableOpacity导航到另一个页面,但失败使用Tab导航到其他页面。导航器工作正常。我在那之后创建了TouchableOpacity。它位于其他按钮的中间,它应该导航到扫描仪页面这里是我的代码:
import React from "react";
import { StyleSheet, TouchableOpacity } from "react-native";
import { createBottomTabNavigator } from "@react-navigation/bottom-tabs";
import { NavigationContainer } from "@react-navigation/native";
import { MaterialCommunityIcons } from "@expo/vector-icons";
import MainScreen from "./view/MainPage";
import ProfileScreen from "./view/ProfilePage";
import ScanScreen from "./view/ScanPage";
const Tab = createBottomTabNavigator();
const App = ({ navigation }) => {
return (
<>
<NavigationContainer>
<Tab.Navigator
style={styles.tabBar}
screenOptions={({ route }) => ({
tabBarIcon: ({ focused, color, size }) => {
let iconName;
if (route.name === "main") {
iconName = focused ? "home" : "home";
} else if (route.name === "scan") {
iconName = focused ? "qrcode-scan" : "qrcode-scan";
} else if (route.name === "profile") {
iconName = focused ? "account" : "account";
}
return (
<MaterialCommunityIcons
name={iconName}
size={size}
color={color}
/>
);
},
tabBarLabel: "",
tabBarActiveTintColor: "#1573FE",
tabBarInactiveTintColor: "gray",
})}
>
<Tab.Screen
name="main"
component={MainScreen}
options={{ headerShown: false }}
/>
<Tab.Screen
name="profile"
component={ProfileScreen}
options={{ headerShown: false }}
/>
</Tab.Navigator>
<TouchableOpacity
style={styles.scanButton}
onPress={() => navigation.navigate("ScanScreen")}
>
<MaterialCommunityIcons name="qrcode-scan" color="white" size={30} />
</TouchableOpacity>
</NavigationContainer>
</>
);
};
这是TouchableOpacity导航的页面:
const ScanScreen = ({ navigation }) => {
return (
<View style={styles.screen}>
<Text>This is the Scan screen</Text>
</View>
);
};
我只是想创建一个按钮
你知道另一种制作圆形按钮的方法吗?
6条答案
按热度按时间pdkcd3nj1#
{/* 您的按钮内容 */}
d6kp6zgx2#
创建自定义组件。因为
navigation
prop不存在。您只能在NavigationContainer
组件下获得navigation
。pgpifvop3#
navigation
prop被传递给screen
组件。您可以在导航器中定义屏幕组件。例如,在代码中,这是一个屏幕组件和
MainScreen
将接收navigation
,您可以导航到另一个屏幕组件。您的应用组件未接收navigation
prop此外,如果您没有将
ScanScreen
注册为导航器中的屏幕组件,它将不会收到navigation
prophi3rlvi24#
检查组件的名称是否拼写正确,即ScanScreen与路由文件中的名称相同。其次检查它们是否在同一堆栈中。
gab6jxml5#
应用程序组件不直接与导航堆栈相关联,它不能直接访问导航属性。要解决这个问题,您可以使用NavigationContainer Package App组件,并将TouchableOpacity移动到MainScreen组件中。
MainScreen组件,您可以添加TouchableOpacity进行扫描:
gfttwv5a6#
你需要传递一个自定义的Button/Icon组件到选项中的tabBarButton属性。我就是这么处理的。