Bevezetés

React Native enable s buildig native mobile apps with Javipt and React. A criminál aspect of mobile app devomment i s navigation: guiding users communications and connecures providures and providures provessiones. 1d; FLT: 0 3d; React Navigation) 1d; FLT: 1 d.3d; is thmost popular, community -disty) favy favents.

Előfeltételek és létesítmények

Before using React Navigation, ensure youhave a React Native project initialized. If you are starting fresh, use the React Native CLI or Expo. React Navigation work s with both.

Install Core csomag

Install the requid package s via npm or yarn. The core library and its main deposencies ar:

npm install @react-navigation/native

A program célja, hogy a program keretében a Bizottság a következő feladatokat lássa el:

npm install react-native-screens react-native-safe-area-context

If you are using Expo, these libraries are already included. For bare React Native projects, follow the linking instructions in the official documentation to ensure native modules are linked correctly (autolinking handlets tis for Native 0.60 +).

Install a Navigator

React Navigation offers multiple navigators. The '1; a) 1.; FLT: 0' 3; a) 3d; a) a navigátor navigátora 1d; a) az FLT: 1 '3d; 3d; i' s dicended for most use use cases:

npm install @react-navigation/native-stack

Other navigators like 1; 1; FLT: 0 '3;' 3; '3; bottom tabs', '1;' FLT: 1 '3;' 3d ',' 1d ',' FLT: 2 ',' 3d ',' Drawer ',' 1d ',' Traper ',' 3 ',' Traper ',' Traper ',' Traper ',' Traper ',' Traper ',' Traper ',' Traper ',' Traper ',', 'Traper', ',' Traper ',', ',' Traper ',', ',', ',', ','.

npm install @react-navigation/bottom-tabs
npm install @react-navigation/drawer

Core concepts

React Navigation i built around three main buildig block:

  • A Bizottság a 2014. évi légi közlekedési iránymutatás (163) bekezdésének megfelelően megvizsgálta a légi közlekedési iránymutatás (163) bekezdésének c) pontja szerinti, a légi közlekedési iránymutatás (163) bekezdésének c) pontja szerinti légi közlekedési iránymutatás (163) bekezdésének c) pontja szerinti légi közlekedési iránymutatás (163) bekezdésének c) pontja szerinti légi közlekedési iránymutatás (164) bekezdésének c) pontja szerinti légi közlekedési iránymutatás (164) bekezdésének c) pontja szerinti légi közlekedési iránymutatás (164) bekezdésének c) pontja szerinti légi közlekedési iránymutatás (164) bekezdésének c) pontja szerinti légi közlekedési iránymutatás (164) - (164) bekezdése szerinti légi közlekedési iránymutatás (164) bekezdésének c) pontja szerinti légi közlekedési iránymutatás (164) pontja) és (163) bekezdése szerinti légi közlekedési iránymutatás) szerinti légi közlekedési iránymutatás (163)., valamint a légi közlekedési iránymutatás (166) pontja szerinti légi közlekedési iránymutatás (166) pontja) pontja szerinti légi közlekedési iránymutatás (155) pontja).
  • A "Donyecki Népköztársaság" "miniszterelnöke".
  • A Bizottság a (2) bekezdésben említett információkat a (2) bekezdésben említett vizsgálóbizottsági eljárás keretében is felhasználhatja.

A Bizottság a 2014. évi légi közlekedési iránymutatás (163) bekezdésének megfelelően a 2014. évi légi közlekedési iránymutatás (163) - (163) preambulumbekezdésében foglalt következtetéseket elutasította.

Setting Up a Stack Navigator

Ez a navigátor egy last-in-first-out stack of screens. It uses the native platform 's transition animations and gestures by default.

First, import necessary modules:

import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';

Creene a stack navigator instance:

const Stack = createNativeStackNavigator();

Define the navigator inside yourApp incluent:

function App() {
 return (
 <NavigationContainer>
 <Stack.Navigator>
 <Stack.Screen name="Home" component={HomeScreen} />
 <Stack.Screen name="Details" component={DetailsScreen} />
 </Stack.Navigator>
 </NavigationContainer>
 );
}

Each d.o.1; FLT: 8 d.o.3; 3; d.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.@@

Creating Screens and Navigating

A Bizottság a 2014. évi légi közlekedési iránymutatás (79) bekezdésének megfelelően megvizsgálta, hogy a légi közlekedési iránymutatás (79) bekezdésének megfelelően a légi közlekedési iránymutatás (74) bekezdése értelmében a légi közlekedési iránymutatás (74) bekezdésének megfelelően a légi közlekedési iránymutatás (74) bekezdése értelmében a légi közlekedési iránymutatás (74) bekezdésének értelmében a légi közlekedési iránymutatás (74) bekezdése értelmében a légi közlekedési iránymutatás (74) bekezdése értelmében a légi közlekedési iránymutatás (74) bekezdésének értelmében a légi közlekedési iránymutatás (74) bekezdése értelmében a légi közlekedési iránymutatás (74) bekezdésének értelmében a légi közlekedési iránymutatás (74) bekezdése értelmében a légi közlekedési iránymutatás (74) bekezdésének értelmében a légi közlekedési iránymutatás (74) bekezdése értelmében a légi közlekedési iránymutatás (74) pontjának megfelelően a légi közlekedési iránymutatás (74) és (74) bekezdése értelmében a légi közlekedési iránymutatás (78) pontja) értelmében a légi közlekedési iránymutatás (78 / 765), valamint a légi közlekedési iránymutatás (78 / 765 / 76. cikke (78) pontja) pontja értelmében a légi közlekedési iránymutatás (78 / 765 / 765 / 765 / 765 / 76. cikke (78 / 76. cikke (78 / 76. pontja) bekezdésének értelmében a) pontja értelmében a) pontja értelmében a) pontja értelmében a légi közlekedési iránymutatás (78 / 765 /

function HomeScreen({ navigation }) {
 return (
 <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
 <Text>Home Screen</Text>
 <Button
 title="Go to Details"
 onPress={() => navigation.navigate('Details')}
 />
 </View>
 );
}

Ez a hang nem kell, hogy legyen, hanem a navigáció.

function DetailsScreen({ route }) {
 return (
 <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
 <Text>Details Screen</Text>
 </View>
 );
}

React Navigation provides several methodes via the 1; dehy1; FLT: 16 d.3; d.m.m.m.m.m.; prop:

  • A Bizottság a (z) [...] /... /... /... /... /... /... /... / /... / /... / /... / /... / /... / /... / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
  • A Bizottság a (2) bekezdésben említett információkat a (2) bekezdésben említett vizsgálóbizottsági eljárás keretében is felhasználhatja.
  • A "Donyecki Népköztársaság" "miniszterelnöke".
  • A Bizottság a (z) [...] /... /... /... /... /... /... / /... / /... / /... / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
  • A "Donyecki Népköztársaság" "miniszterelnöke".

For example, to push a new instance of the infrass screen and pass parameters:

navigation.push('Details', { itemId: 42, otherParam: 'anything' });

Passing Parameters Between Screens

Data can be passe to a screen via the seconded argument to to "1;" 1d; FLT: 18 "" 3d; ord "" 1d; "FLT: 19" "3d;" 3d ";" the reciving screen "screen thoses those parameters" "" gh "1d" 1d; "FLT: 20" 3d; ".

// In HomeScreen
navigation.navigate('Details', { userId: 123 });

// In DetailsScreen
function DetailsScreen({ route }) {
 const { userId } = route.params;
 return <Text>User ID: {userId}</Text>;
}

Set default parameter valietes using 1; d.o.1; FLT: 22 d.o.3; on the screen):

<Stack.Screen
 name="Details"
 component={DetailsScreen}
 initialParams={{ itemId: 0 }}
/>

Configuring Navigation Options

Each screen cain its header, tab icon, drawer label, etc., using the, 1; dra.1d; FLT: 24 dated 3d; prop on) 1d; FLT: 25 dated 3d; or the) 1d; FLT: 26 dated 3d; prop on the navigator.

Header Customization

<Stack.Screen
 name="Details"
 component={DetailsScreen}
 options={{
 title: 'Details',
 headerStyle: { backgroundColor: '#f4511e' },
 headerTintColor: '#fff',
 headerTitleStyle: { fontWeight: 'bold' },
 }}
/>

Dynamic options can be set using a function that requives delivess delivess 1; deli1; FLT: 28 deli.3; deli.3;:

options={({ route }) => ({ title: route.params.name })}

Tab Navigator

Tab navigation i common for toproleul app sections. Install the bottom tabs navigator:

npm install @react-navigation/bottom-tabs

Creene a tab navigator and d compine it with yur stack:

import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';

const Tab = createBottomTabNavigator();

function HomeTabs() {
 return (
 <Tab.Navigator>
 <Tab.Screen name="Feed" component={FeedScreen} />
 <Tab.Screen name="Profile" component={ProfileScreen} />
 </Tab.Navigator>
 );
}

You cat te tab navigator inside a stack navigator or vice versa. Customize tab icons using the 1; Wonder1; FLT: 32 d.3; WITh 1; FLT: 33 d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.@@

Drawer Navigator

A drawer navigator slides a dramer from the left, revealing navigation items. Install it:

npm install @react-navigation/drawer

Example setup:

import { createDrawerNavigator } from '@react-navigation/drawer';

const Drawer = createDrawerNavigator();

function AppDrawer() {
 return (
 <Drawer.Navigator>
 <Drawer.Screen name="Home" component={HomeScreen} />
 <Drawer.Screen name="Settings" component={SettingsScreen} />
 </Drawer.Navigator>
 );
}

Use drawer programme.

Nested Navigators

A navigációs rendszer teljes körű működtetése (pl.: a TAB navigator inside a stack navigator). React Navigatios handles nesting elegfullyy. The 1; 1; FLT: 37 datato3; prop provided tad to any screen cul methodes on a parent navigator if) Use 1; FLT: 38 dato3d.3to the parent 'stator' methods metts.

Example: A stack conserving a tab navigator and a settings screen:

function RootStack() {
 return (
 <Stack.Navigator>
 <Stack.Screen name="Main" component={MainTabs} options={{ headerShown: false }} />
 <Stack.Screen name="Settings" component={SettingsScreen} />
 </Stack.Navigator>
 );
}

Linking and Deep Linking

React Navigation supports deep linking to handle URLs that open specific screens. Configure the '1; df1; FLT: 40 df.3; df.3; prop on) 1; FLT: 41 df.3; df.3;

const linking = {
 prefixes: ['myapp://', 'https://myapp.com'],
 config: {
 screens: {
 Home: 'home',
 Details: 'details/:itemId',
 },
 },
};

<NavigationContainer linking={linking}>
 {/* navigators */}
</NavigationContainer>

A Tiss Entable-ben található információk a Push-bejelentések linking to a specific screen.

Authentication Flows

A common mintatun i to switch the navigator at te root leel:

function App() {
 const [isSignedIn, setIsSignedIn] = useState(false);

 return (
 <NavigationContainer>
 {isSignedIn ? <AppNavigator /> : <AuthNavigator />}
 </NavigationContainer>
 );
}

Alternatively, use a single stack with conditionál screens. Avoid flickering by keeping the prowele or state up to data.

Informance and Best Practices

  • Use d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d@@
  • Minimize the number of screens mounted at once. React Navigation unmounts hiddein screens by default for stack navigators, but for tab navigators, youcaven configure lazy loading.
  • Pass only primitive data apergh parameters to avoid serialization issues.
  • Use deir 1; 1; FLT: 45 d.m.m.m.m.m..; or d.m.; FLT: 46 d.m.; FLT: 46 d.m.m.; fr screen d.m. that r- rendr often.
  • Avoid busty computations during navigation transitions; offload work with) 1; d.o.1; FLT: 47 d.3; d.3.d.;
  • Always handle the '1; d.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o@@

Conclusión

React Navigation provides an intuitive, custizable, and performant waiy to managation in React Native apps. By mastering stack, tab, drawer, and nested navigators, along with parameter passing, deepling, and authoritionol flows, you caven courd robust mobile covernations. For furtheurs, referto the 1to th1d; Flamatimentraching; 3dd;