React-Navigation V6 使用
react-native >= 0.63.0
安装核心以及其他依赖
npm install @react-navigation/native
npm install react-native-screens react-native-safe-area-context
如果是IOS
使用Mac并为iOS进行开发,则需要安装Pod(通过Cocoapods)来完成链接。
安装完Cocoapods后,把项目和Cocoapods完成链接
npx pod-install ios
如果是Android
因为 react-native-screens
需要在Android里面进行配置后才可以使用.
请编辑这个文件
android/app/src/main/java/<your package name>/MainActivity.java
将以下代码添加到类的正文中:MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(null);
}
并且引入这个包名
import android.os.Bundle;
使用栈路由
因为上面只是引入了
React-Navigation
的核心,但是使用路由,现在还需要引入包
npm install @react-navigation/native-stack
在React-native中配置
在 index.js
或者 App.js
使用 NavigationContainer
容器来包裹住你的应用
比如我在
index.js
文件里面进行修改
/**
* @format
*/
import React from 'react';
import {AppRegistry} from 'react-native';
import App from './App';
import MyList from './pages/List';
import {name as appName} from './app.json';
import {createNativeStackNavigator} from '@react-navigation/native-stack';
import {NavigationContainer} from '@react-navigation/native';
const AppRoot = () => {
const Stack = createNativeStackNavigator();
return (
<NavigationContainer>
<Stack.Navigator initialRouteName="App">
<Stack.Screen name="App" component={App} />
<Stack.Screen name="MyList" component={MyList} />
</Stack.Navigator>
</NavigationContainer>
);
};
AppRegistry.registerComponent(appName, () => AppRoot);
-
<Stack.Navigator>
组件initialRouteName
属性是一定要填写,不然会报错,因为不知道显示哪一个路由 -
<Stack.Screen>
组件name
和component
属性必填的,一个路由的名称,一个路由展示的界面
App.js
/**
* Sample React Native App
* https://github.com/facebook/react-native
*
* @format
* @flow strict-local
*/
import React from 'react';
import type {Node} from 'react';
import {Button, StyleSheet, useColorScheme, View} from 'react-native';
import {Colors} from 'react-native/Libraries/NewAppScreen';
const App: () => Node = props => {
const isDarkMode = useColorScheme() === 'dark';
const {navigation} = props;
const backgroundStyle = {
backgroundColor: isDarkMode ? Colors.darker : Colors.lighter,
};
const toList = () => {
navigation.navigate('MyList');
};
return (
<View>
<Button onPress={toList} title="跳转List" />
</View>
);
};
const styles = StyleSheet.create({});
export default App;
list.js
import React from 'react';
import {Text, View} from 'react-native';
export default function MyList() {
return (
<View style={{flex: 1, alignItems: 'center', justifyContent: 'center'}}>
<Text>Details Screen</Text>
</View>
);
}


网友评论