写点什么

React Navigation 8.0 Alpha 发布:原生底部标签、重构后的 TypeScript 类型推断与历史记录能力

作者:Daniel Curtis
  • 2026-05-06
    北京
  • 本文字数:1199 字

    阅读完需:约 4 分钟

React Navigation是广泛使用于 React Native 与 Web 应用的路由和导航库。该项目发布了8.0 alpha版本,并同步发布了2026年3月进展报告,带来了默认原生底部标签、改进后的 TypeScript 类型推断,以及多项新的开发者体验特性。

该 alpha 版本于 2025 年 12 月宣布,重点是在尽量减少大范围破坏性变更的前提下,交付社区长期呼吁的改进。随后在 2026 年 3 月发布的进展报告又进一步完善了功能,包括默认启用深度链接、支持 Standard Schema,以及原生图标集成。

React Navigation8.0 最直观的变化之一是:Bottom Tab Navigator 在 iOS 与 Android 上默认改为使用原生平台组件,底层由react-native-screens驱动。这也包含对 iOS 26 的新 liquid glass 效果的支持。喜欢以前 JavaScript 实现的开发者仍可在导航器上把implementation属性设为custom来切回旧实现。Medium网站上的博客作者 HB Nguyen 将原生标签与 liquid glass 支持列为升级关键理由,并指出该库如今“与设备原生 UI 的交互更深”。

TypeScript 支持也得到了更新。在 React Navigation 7 中引入的静态 API 进行了重构,useNavigationuseRouteuseNavigationState等 Hook 现在可基于给定的屏幕名称自动推断类型。

该库还可以直接从链接配置的路径模式推断参数类型,这一思路是受到了TanStack Router启发。从技术上讲,这使得开发者有可能在完全不手写任何导航类型注解的情况下构建整款应用。一位使用 r/reactnative 的Reddit用户对这些改进表示期待,但也反映出部分用户对升级周期与破坏性变更感到沮丧:

我已经被这一整轮升级周期折腾得精疲力尽。它似乎永远没有尽头。我这个圣诞节的愿望是有一个稳定的 React Native 框架。

我刚把项目升级到新架构并处理完一堆问题(比如,react-native-maps 不稳定)。又刚完成了 react navigation v7 的升级,结果 v8 就来了。

3 月进展报告还引入了更多特性,包括新的inactiveBehavior选项。该选项利用 React 19 的React.Activity暂停非活动屏幕,减少不必要的重复渲染。深度链接现在会默认开启,可以根据屏幕名称自动生成路径;此外,库还在链接配置中新增了对Standard Schema校验库(比如,Zod 与 Valibot)的支持。Web 端无障碍能力也得到提升,所有导航器现统一使用inert属性,以便将非焦点屏幕正确地对辅助技术隐藏。

新的pushParams API 允许开发者仅通过更新参数就向历史栈追加记录,而不必推入一个全新的页面。这在 Web 场景中尤其重要,因为用户通常希望某些 UI 状态变化能生成新的历史记录项,并可通过浏览器前进/后退按钮进行导航。

React Navigation8.0 要求基于 React19,这意味着需要 React Native 0.83 或更高版本,以及 Expo SDK 55 或更高版本。官方提供了详细的升级指南,覆盖从 7.x 迁移所需的全部破坏性变更与步骤。

React Navigation 是由Satyajit Sahoo维护的开源库。开发者现在可通过安装带有@next标签的包来试用 alpha 版本。

原文链接:

 React Navigation 8.0 Alpha with Native Bottom Tabs, Reworked TypeScript Inference and History