-
-
Save Karthik-B-06/a39321afee5f96741ff9078827884d37 to your computer and use it in GitHub Desktop.
| import * as React from "react"; | |
| import { View, Text, Button } from "react-native"; | |
| import { NavigationContainer, useNavigation } from "@react-navigation/native"; | |
| import { createNativeStackNavigator, NativeStackScreenProps } from "@react-navigation/native-stack"; | |
| export type RootStackParamList = { | |
| Home: undefined; | |
| Settings: undefined; | |
| Profile: undefined; | |
| }; | |
| type HomeScreenProps = NativeStackScreenProps<RootStackParamList, "Home">; | |
| const HomeScreen: React.FC<HomeScreenProps> = (props) => { | |
| return ( | |
| <View style={{ flex: 1, alignItems: "center", justifyContent: "center" }}> | |
| <Button title='Go to Profile' onPress={() => props.navigation.push("Profile")} /> | |
| <Button title='Go to Settings' onPress={() => props.navigation.push("Settings")} /> | |
| </View> | |
| ); | |
| }; | |
| type SettingsScreenProps = NativeStackScreenProps<RootStackParamList, "Settings">; | |
| const SettingsScreen: React.FC<SettingsScreenProps> = (props) => { | |
| return ( | |
| <View style={{ flex: 1, alignItems: "center", justifyContent: "center" }}> | |
| <Text>Settings Screen</Text> | |
| <Button title='Go to Profile' onPress={() => props.navigation.push("Profile")} /> | |
| </View> | |
| ); | |
| }; | |
| type ProfileScreenProps = NativeStackScreenProps<RootStackParamList, "Settings">; | |
| const ProfileScreen: React.FC<ProfileScreenProps> = (props) => { | |
| return ( | |
| <View style={{ flex: 1, alignItems: "center", justifyContent: "center" }}> | |
| <Text>Profile Screen</Text> | |
| <Button title='Go to Settings' onPress={() => props.navigation.push("Settings")} /> | |
| </View> | |
| ); | |
| }; | |
| const Stack = createNativeStackNavigator<RootStackParamList>(); | |
| function App() { | |
| return ( | |
| <NavigationContainer> | |
| <Stack.Navigator> | |
| <Stack.Screen name='Home' component={HomeScreen} /> | |
| <Stack.Screen name='Profile' component={ProfileScreen} /> | |
| <Stack.Screen name='Settings' component={SettingsScreen} /> | |
| </Stack.Navigator> | |
| </NavigationContainer> | |
| ); | |
| } | |
| export default App; |
`import * as React from "react";
import { View, Text, Button } from "react-native";
import { NavigationContainer, useNavigation } from "@react-navigation/native";
import { createNativeStackNavigator, NativeStackScreenProps } from "@react-navigation/native-stack";
export type RootStackParamList = {
Home: undefined;
Settings: undefined;
Profile: { userId: string }; // Define the type of userId prop for Profile screen
};
type HomeScreenProps = NativeStackScreenProps<RootStackParamList, "Home">;
const HomeScreen: React.FC = (props) => {
return (
<View style={{ flex: 1, alignItems: "center", justifyContent: "center" }}>
<Button title='Go to Profile' onPress={() => props.navigation.push("Profile", { userId: "123" })} />
<Button title='Go to Settings' onPress={() => props.navigation.push("Settings")} />
);
};
type SettingsScreenProps = NativeStackScreenProps<RootStackParamList, "Settings">;
const SettingsScreen: React.FC = (props) => {
return (
<View style={{ flex: 1, alignItems: "center", justifyContent: "center" }}>
Settings Screen
<Button title='Go to Profile' onPress={() => props.navigation.push("Profile", { userId: "456" })} />
);
};
type ProfileScreenProps = NativeStackScreenProps<RootStackParamList, "Profile">;
const ProfileScreen: React.FC = (props) => {
const userId = props.route.params?.userId || "No User Id"; // Access the passed userId prop
return (
<View style={{ flex: 1, alignItems: "center", justifyContent: "center" }}>
Profile Screen
User ID: {userId}
<Button title='Go to Settings' onPress={() => props.navigation.push("Settings")} />
);
};
const Stack = createNativeStackNavigator();
function App() {
return (
<Stack.Navigator>
<Stack.Screen name='Home' component={HomeScreen} />
<Stack.Screen name='Profile' component={ProfileScreen} />
<Stack.Screen name='Settings' component={SettingsScreen} />
</Stack.Navigator>
);
}
export default App;
`
In your example you did not show how to pass parameters to a new screen through the RootStackParamList.