美文网首页
React-Navigation

React-Navigation

作者: 爱吃豆包 | 来源:发表于2022-03-06 20:49 被阅读0次

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> 组件 namecomponent 属性必填的,一个路由的名称,一个路由展示的界面

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>
  );
}

请确保能正常跑起来
跳转页面

相关文章

网友评论

      本文标题:React-Navigation

      本文链接:https://www.haomeiwen.com/subject/mjmwrrtx.html