React Navigation 初探 - 创建 native stack navigator

React Navigation 初探 - 创建 native stack navigator

安装 @react-navigation/native-stack

上一章节我们安装的是导航器的构建模块和基础模块, React Navigation 中的每个 navigator 都有自己库, 使用native stack navigator我们需要安装@react-navigation/native-stack :

npm: npm install @react-navigation/native-stack
或
Yarn: yarn add @react-navigation/native-stack

@react-navigation/native-stack 依赖于 react-native-screens 和我们在之前安装的其他库,如果没有安装,请移步上一章进行操作.

创建 native stack navigator

createNativeStackNavigator 是一个函数,他返回两个对象属性: ScreenNavigator.他们都是用来配置React的组件. Navigator 应该包含一个 Screen 作为其子路的配置.

NavigationContainer 是一个管理导航树和包含导航状态的组件.这个组件包含所有导航的结构.通常我们在 app 的根目录渲染这个组件(通常在 App.js渲染).

在 snack 尝试这个例子

// In App.js in a new project

import * as React from 'react';
import { View, Text } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';

function HomeScreen() {
  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Text>Home Screen</Text>
    </View>
  );
}

const Stack = createNativeStackNavigator();

function App() {
  return (
    <NavigationContainer>
      <Stack.Navigator>
        <Stack.Screen name="Home" component={HomeScreen} />
      </Stack.Navigator>
    </NavigationContainer>
  );
}

export default App;

配置导航器

向 native stack navigator 添加新的页面,设置 Home 为首选渲染页面.

在 snack 尝试这个例子

function DetailsScreen() {
  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Text>Details Screen</Text>
    </View>
  );
}

const Stack = createNativeStackNavigator();

function App() {
  return (
    <NavigationContainer>
      <Stack.Navigator initialRouteName="Home">
        <Stack.Screen name="Home" component={HomeScreen} />
        <Stack.Screen name="Details" component={DetailsScreen} />
      </Stack.Navigator>
    </NavigationContainer>
  );
}

现在我们有 HomeDetails 两个路由.可以通过 Screen 指定路由. Screen 接收一个 name属性作为路由名,接收一个 component 作为路由要展现的组件.
这里,路由Home对应 HomeScreen, Details 对应 DetailsScreen. 堆栈路由初始化的路由为 Home,可以通过修改NavigatorinitialRouteName 的值修改初始化路由(修改后需要重新运行才会生效).

指定选项

导航器中的每个页面都可以指定一些选项,比如呈现的标题,这些都可以在 options中设置.

<Stack.Screen
  name="Home"
  component={HomeScreen}
  options={{ title: 'Overview' }}
/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值