Skip to content

react-navigation

react-navigation

https://reactnavigation.org/docs/hello-react-navigation/

中文文档

https://juejin.cn/post/6850418114379644942

基本

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

Header buttons

Configuring the header bar

Passing parameters to routes

Moving between screens

hello-react-navigation

Glossary

Navigator

Screen

Route

Navigation Prop

Route Prop

Header

Guides

Tab navigation

Drawer navigation

Authentication

Safe areas

Hiding tab bar in specific screens

Different status bar configuration

Custom Android back button behavior

Preventing going back

Navigating without the navigation prop

Screen tracking for analytics

Themes

API Reference

The NavigationContainer is responsible for managing your app state and linking your top-level navigator to the app environment.

管理应用状态和链接顶级导航器到应用程序环境

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

const Stack = createStackNavigator();

export default function App() {
  return (
    <NavigationContainer>
      <Stack.Navigator>{/* ... */}</Stack.Navigator>
    </NavigationContainer>
  );
}

Stack.Screen

javascript
function Profile({ navigation }) {
  React.useEffect(() => {
    const unsubscribe = navigation.addListener('focus', () => {
      // do something
    });

    return unsubscribe;
  }, [navigation]);

  return <ProfileContent />;
}

// 2

<Tab.Screen
  name="Chat"
  component={Chat}
  listeners={{
    tabPress: e => {
      // Prevent default action
      e.preventDefault();
    },
  }}
/>

createBottomTabNavigator

createDrawerNavigator

createNativeStackNavigator

createStackNavigator

javascript
		const Stack = createStackNavigator<RootStackParamList>();

    <Stack.Navigator screenOptions={{ headerShown: false }}>
      <Stack.Screen name="Home" component={HomeScreen} />
      {/* <Stack.Screen name="Root" component={BottomTabNavigator} /> */}
      <Stack.Screen
        name="NotFound"
        component={NotFoundScreen}
        options={{ title: "Oops!" }}
      />
    </Stack.Navigator>

Hooks

useNavigation

useScrollToTop

javascript
import * as React from 'react';
import { Button } from 'react-native';
import { useNavigation } from '@react-navigation/native';

function MyBackButton() {
  const navigation = useNavigation();

  return (
    <Button
      title="Back"
      onPress={() => {
        navigation.goBack();
      }}
    />
  );
}

Actions

example

https://github.com/react-navigation/react-navigation/tree/main/example

更新: 2021-05-20 11:52:56
原文: https://www.yuque.com/u3641/dxlfpu/ngf1u6