React Native路由的示例

615 阅读1分钟

React Navigation库实现React Native路由的示例代码:

1. 首先,安装React Navigation库:

npm install @react-navigation/native
npm install react-native-reanimated react-native-gesture-handler react-native-screens react-native-safe-area-context @react-native-community/masked-view

2. 在项目中创建一个StackNavigator:

import React from 'react';
import { createStackNavigator } from '@react-navigation/stack';
import { NavigationContainer } from '@react-navigation/native';
import HomeScreen from './HomeScreen';
import DetailScreen from './DetailScreen';
 const Stack = createStackNavigator();
 function App() {
  return (
    <NavigationContainer>
      <Stack.Navigator
        initialRouteName="HomeScreen"
        screenOptions={{
          headerStyle: {
            backgroundColor: '#3f51b5',
          },
          headerTintColor: '#fff',
          headerTitleStyle: {
            fontWeight: 'bold',
          },
        }}>
        <Stack.Screen
          name="HomeScreen"
          component={HomeScreen}
          options={{
            title: 'Home',
          }}
        />
        <Stack.Screen
          name="DetailScreen"
          component={DetailScreen}
          options={{
            title: 'Detail',
          }}
        />
      </Stack.Navigator>
    </NavigationContainer>
  );
}
 export default App;

3. 创建HomeScreen和DetailScreen组件:

import React from 'react';
import { View, Text, Button } from 'react-native';
 function HomeScreen({ navigation }) {
  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Text>Home Screen</Text>
      <Button
        title="Go to Detail Screen"
        onPress={() => navigation.navigate('DetailScreen')}
      />
    </View>
  );
}
 function DetailScreen() {
  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Text>Detail Screen</Text>
    </View>
  );
}
 export { HomeScreen, DetailScreen };

4. 运行程序:

import { AppRegistry } from 'react-native';
import App from './App';
import { name as appName } from './app.json';
 AppRegistry.registerComponent(appName, () => App);

在每个屏幕中,可以通过navigation对象进行导航(在HomeScreen中使用了Button组件,通过onPress属性实现了调用navigation.navigate方法)。 运行程序后,可以在home screen中点击"Go to Detail Screen"按钮进入Detail Screen。