【React Native】布局和 Stack 、Slot

布局和Stack

点击链接后,页面切换时最好是有动画效果。页面一般都有头部,里面有页面的标题之类的东西。

app目录里,新建一个_layout.js文件,这是项目的布局文件

这个名字是固定的,前面必须有一个_

布局的意思,就是所有页面都归它管,而且它是最先运行的文件,我们可以在里面做各种配置。

expo-router里,引用StackStack是用于管理应用中的页面堆栈的。然后 IOS 可以看到顶部出现了 header ,标题显示的是 index ,然后左右切换页面也会出现动画效果。

  • 在布局文件里加上Stack后,所有页面都会被Stack管理。
  • 进入新页面会从右侧推入(Push),返回时弹出(Pop)页面(动画效果也是如此,IOS默认,安装需要额外配置),形成后进先出的这种结构。

但是安卓端顶部的标题,显示到最左边,而不是中间。切换页面,感觉没有什么动画效果。

所以可以增加一些配置:

复制代码
import { Stack } from 'expo-router';

export default function Layout() {
  return (
    <Stack
      screenOptions={{
        headerTitleAlign: 'center',     // 安卓标题栏居中
        animation: 'slide_from_right',  // 安卓使用左右切屏
      }}
    />
  );
}

然后就可以看到动画和居中的标题。

Slot 插槽

Slot就是一个占位符,各个页面,都会渲染在它里面。

复制代码
import { Slot } from "expo-router";
import { SafeAreaView, StyleSheet, Text } from "react-native";

export default function Layout() {
  return (
    <SafeAreaView style={styles.container}>
      <Text style={styles.header}>App header</Text>
      <Slot />
      <Text style={styles.footer}>© 版权所有</Text>
    </SafeAreaView>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
  },
  header: {
    fontSize: 24,
    textAlign: "center",
  },
  footer: {
    fontSize: 18,
    textAlign: "center",
  },
});

跳转到详情页,也会有一样的顶部和底部信息:

相关推荐
JieE21210 分钟前
LeetCode 226. 翻转二叉树|JS 递归超详细拆解,二叉树入门经典题
javascript·算法
JieE21226 分钟前
LeetCode 104. 二叉树的最大深度|递归思路超详细拆解
javascript·算法
kyriewen4 小时前
我用 AI 一周写完了整个项目,上线第一天就崩了——这是我踩过最贵的 5 个坑
前端·javascript·ai编程
Larcher5 小时前
AI Loop:让AI像人一样自主完成任务的核心机制
javascript·人工智能·设计模式
默_笙5 小时前
🃏 JS 只有 8 种数据类型,但我花了 2 天才搞懂 null 和 undefined 的区别
javascript
jump_jump5 小时前
流式 HTML:从 htmx 片段装配到浏览器原生增量渲染
javascript·性能优化·前端工程化
光影少年6 小时前
React 合成事件机制、和原生事件区别、事件冒泡阻止
前端·react.js·掘金·金石计划
swipe7 小时前
正则表达式入门到进阶:从表单校验到手写模板引擎
前端·javascript·面试
kyriewen7 小时前
前端错误监控最全指南:捕获 JS 异常、Promise 拒绝、资源加载失败,附上报代码
前端·javascript·监控
大家的林语冰8 小时前
ESLint 近期动态大全,新版本正式发布,antfu 大佬推荐的插件也更新了!
前端·javascript·前端工程化