I am totally new to react native and I am just wondering if I am misunderstanding something when it comes to different pages in it.
I am just playing with it at the moment but everything is in the app.js folder. Is there a way to put the single pages into different files like
main.js about.js, etc
I have made a very simple app with a navigation menu at the bottom and it shows the pages in functions. I would like these functions in single files.
Is it just the way its designed or am I just not getting it? It would make things a lot easier.
My simple code in app.js is :-
import * as React from 'react';
import { Text, View, StyleSheet } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
import { MaterialCommunityIcons } from '@expo/vector-icons';
import { WebView } from 'react-native-webview';
import Constants from 'expo-constants';
function Search() {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Hello</Text>
</View>
);
}
function Notifications() {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Notifications!</Text>
</View>
);
}
function Messages() {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Messages!</Text>
</View>
);
}
function Location() {
return (
<WebView
style={styles.container}
source={{ uri: 'https://www.google.com' }}
/>
);
}
function Profile() {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>User Profile!</Text>
</View>
);
}
const Tab = createBottomTabNavigator();
function MyTabs() {
return (
<Tab.Navigator
initialRouteName="Location"
screenOptions={{
tabBarActiveTintColor: '#e91e63',
}}
>
<Tab.Screen
name="Search"
component={Search}
options={{
tabBarLabel: 'Search',
tabBarIcon: ({ color, size }) => (
<MaterialCommunityIcons name="account-search" color={color} size={size} />
),
}}
/>
<Tab.Screen
name="Notifications"
component={Notifications}
options={{
tabBarLabel: 'Notification',
tabBarIcon: ({ color, size }) => (
<MaterialCommunityIcons name="bell" color={color} size={size} />
),
}}
/>
<Tab.Screen
name="Messages"
component={Profile}
options={{
tabBarLabel: 'Messages',
tabBarIcon: ({ color, size }) => (
<MaterialCommunityIcons name="message" color={color} size={size} />
),
}}
/>
<Tab.Screen
name="Locationddsd"
component={Location}
options={{
tabBarLabel: 'Location',
tabBarIcon: ({ color, size }) => (
<MaterialCommunityIcons name="map-marker" color={color} size={size} />
),
}}
/>
<Tab.Screen
name="Profile"
component={Profile}
options={{
tabBarLabel: 'Account',
tabBarIcon: ({ color, size }) => (
<MaterialCommunityIcons name="account" color={color} size={size} />
),
}}
/>
</Tab.Navigator>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
marginTop: Constants.statusBarHeight,
},
});
export default function App() {
return (
<NavigationContainer>
<MyTabs />
</NavigationContainer>
);
}
I am not asking for help coding just advice on adding them into seperate files and calling them.
Thank you in advance
CodePudding user response:
I found a good example here if anyone needs it
https://snack.expo.dev/@aboutreact/bottom-navigation-example
CodePudding user response:
You can find the solution here: https://reactnative.dev/docs/navigation