React Navigation5.0系列一:StackNavigator的使用

简介: React Navigation5.0系列一:StackNavigator的使用

想必读者朋友们在官宣:ReactNative导航库重大更新这篇文章中了解到了,React Native官方推荐的路由导航库React Navigation更新到了第5版,也了解到了具体的提升和变化的地方,感兴趣的朋友可以仔细阅读这篇文章来了解一下新版和之前版本的差异。

新版本的React Navigation相比较之前的版本,无论是安装或者项目中集成的方法和步骤,都发生了很大的变化,接下来跟着这篇文章来一一了解一下。

安装


使用下面的命令添加react navigation的基础依赖

yarn add @react-navigation/native

使用如下命令添加其他的配置依赖项内容,比如: react-native-gesture-handler, react-native-reanimated 等

yarn add react-native-reanimated react-native-gesture-handler react-native-screens react-native-safe-area-context @react-native-community/masked-view

如果你的React Native项目的版本在0.60以上,那么安装依赖就完成,如果项目版本低于0.60,使用react-native link命令自动添加原生项目配置。

对于ios端,首先确定你已正确安装Cocoapods ,之后再执行如下命令来完成依赖

cd ios; pod install; cd ..

最后一步,在你的项目入口文件index.js中在最底部,添加如下代码:

import 'react-native-gesture-handler';

使用StackNavigator


在使用StackNavigator.之前,需要将导航添加到项目中,使用NavigationContainer包裹这个整个入口文件,如下示例代码所示

import * as React from 'react';
import { NavigationContainer } from '@react-navigation/native';
const App = () => {
  return (
    <NavigationContainer>
      <RootStack.Navigator>
        <RootStack.Screen name='TabNav' component={TabScreen} />
        <RootStack.Screen name="Detail" component={DetailScreen} />
      </RootStack.Navigator>
    </NavigationContainer>
  );
}
export default App;

接下来,因为从React Navigation4.x版本开始,堆栈导航库就已经被分离出来,作为单独的依赖文件,所以要想添加StackNavigator的依赖

yarn add @react-navigation/stack

接着,我们创建一个home文件使用stack navigator,具体代码如下

import {
  createStackNavigator
} from '@react-navigation/stack'
const HomeScreen = ({ navigation }) => {
  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Text>HomeScreen</Text>
      <Button
        title="Go to Details"
        onPress={() => navigation.navigate('Detail')}
      />
    </View>
  )
}
const HomeStack = createStackNavigator();
const App = () => {
  return (
    <NavigationContainer>
      <HomeStack.Navigator>
        <HomeStack.Screen name='Home' component={HomeScreen} />
      </HomeStack.Navigator>
    </NavigationContainer>
  );
}

微信图片_20220610101819.png来看一下这段代码:

<HomeStack.Screen 
name='Home' 
component={HomeScreen} 
/>

使用name指定了route name, 使用component指定了路由的对应页面,需要注意的是

Component属性只接受组件,不接受函数组件,比如这样的写法,component={() => HomeScreen/>} 是不允许的。

我们看一下关于HomeStack.Screen配置的源代码:微信图片_20220610101927.png

总结


新版的导航框架,将导航的具体方式进行了组件化,方便使用进行动态的配置,更加的具有可扩展行,比如使用screen option进行自定义的配置。

目录
相关文章
|
前端开发
React Navigation5.0系列四:Nesting navigators(嵌套导航)
React Navigation5.0系列四:Nesting navigators(嵌套导航)
287 0
React Navigation5.0系列四:Nesting navigators(嵌套导航)
|
资源调度 前端开发
React Navigation5.0系列三:Drawer navigation的使用
React Navigation5.0系列三:Drawer navigation的使用
496 0
React Navigation5.0系列三:Drawer navigation的使用
|
前端开发
React Navigation5.0系列二:TabNavigation的使用
React Navigation5.0系列二:TabNavigation的使用
237 0
React Navigation5.0系列二:TabNavigation的使用
|
JavaScript Android开发
react-navigation之TabNavigator, StackNavigator使用配合redux
我在react-navigation的组件StackNavigator 和TabNavigator组合使用在加上redux,出现如下问题 there is no route defined ...
2003 0
|
4月前
|
前端开发 JavaScript 开发者
深入理解React Hooks:提升前端开发效率的关键
【10月更文挑战第5天】深入理解React Hooks:提升前端开发效率的关键
|
3月前
|
前端开发 JavaScript 开发者
颠覆传统:React框架如何引领前端开发的革命性变革
【10月更文挑战第32天】本文以问答形式探讨了React框架的特性和应用。React是一款由Facebook推出的JavaScript库,以其虚拟DOM机制和组件化设计,成为构建高性能单页面应用的理想选择。文章介绍了如何开始一个React项目、组件化思想的体现、性能优化方法、表单处理及路由实现等内容,帮助开发者更好地理解和使用React。
119 9
|
4月前
|
前端开发
深入解析React Hooks:构建高效且可维护的前端应用
本文将带你走进React Hooks的世界,探索这一革新特性如何改变我们构建React组件的方式。通过分析Hooks的核心概念、使用方法和最佳实践,文章旨在帮助你充分利用Hooks来提高开发效率,编写更简洁、更可维护的前端代码。我们将通过实际代码示例,深入了解useState、useEffect等常用Hooks的内部工作原理,并探讨如何自定义Hooks以复用逻辑。
|
4月前
|
前端开发 JavaScript API
探索React Hooks:前端开发的革命性工具
【10月更文挑战第5天】探索React Hooks:前端开发的革命性工具
|
3月前
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
274 8
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
|
3月前
|
前端开发 JavaScript 开发者
使用React和Redux构建高效的前端应用
使用React和Redux构建高效的前端应用
71 1