ReactNativeWeb导航Skill:一套导航代码同时跑通 App 与 Web
- 定位清晰:这是一份面向 React Native Web 项目的导航实现技能,核心是把 React Navigation 的跨平台模式、Web URL 与深度链接配置,整理成 AI 可以直接调用的知识库。
- 产出可直接落地:技能覆盖 Stack、Tab、Drawer 三类导航器,以及类型安全参数列表、受保护路由、导航守卫、程序化导航等常见需求,并明确列出「反模式」提醒。
- 擅长避坑:它明确建议不要在跨端项目里直接使用只适用于 Web 的 React Router,也不要把导航状态塞进 Redux/Context,能从源头减少重构成本。
- 自动生效:技能标识为「用户不可直接调用」,意味着它通常不是靠手动命令触发,而是在你描述导航相关任务时由 AI 自动加载(具体触发机制以官方说明为准)。
- 一句话价值:让「一套导航代码同时跑原生 App 和 Web」这件事,从查文档、试错,变成一次对话就能拿到的标准实现方案。
该技能叫什么?如何下载安装 AI 技能提升开发效率?
基本信息
| 项目 | 内容 |
|---|---|
| 技能中文名 | ReactNativeWeb导航Skill |
| 技能英文名 | react-native-web-navigation |
| 技能ID | 14193 |
| 是否用户可调用 | 否(由 AI 在匹配场景下自动加载,以官方说明为准) |
| 允许工具 | 读取、写入、编辑、Bash、Grep、Glob |
| 所属技能族 | 与 react-native-web-core(核心概念)、react-native-web-styling(样式设计)、react-native-web-testing(流程测试)并列 |
它解决什么问题
React Native Web 项目最容易被低估的成本,是「导航」。App 端和 Web 端共用一套组件,但路由这件事天生存在分叉:Web 端用户期待地址栏、可分享链接、浏览器前进后退;App 端用户期待原生栈动画、手势返回、底部 Tab。很多团队因此被迫维护两套导航代码,或者干脆在 Web 端塞进 React Router,最终导致参数类型不一致、跳转行为不一致、深度链接失效。
ReactNativeWeb导航Skill 的作用就是把这件事「标准化」:它以 React Navigation 为统一入口,把 NavigationContainer、原生栈导航、Web 深度链接映射、导航钩子、鉴权守卫等模式整理成可直接复用的实现参考,让 AI 在你提出需求时能一次给出跨端一致的方案。
下载安装思路与步骤
由于该技能本身是知识与模式型技能,安装的关键是「接入你日常使用的 AI 编程环境」,而不是装一个 npm 包。通用思路如下:
- 确认前提:你已经有一个支持 AI 技能(Skill)机制的编程环境或 Agent 客户端;项目中已具备 React Native Web 基础工程,并按官方说明安装好 React Navigation 相关依赖(版本与安装命令以官方说明为准)。
- 搜索安装:在技能市场、技能目录或团队内部的技能配置文件中,用英文名
react-native-web-navigation或技能ID14193检索并添加该技能;企业团队通常由管理员统一配置后下发。 - 确认权限:该技能声明了读取、写入、编辑、Bash、Grep、Glob 权限,意味着它在被触发后可以读取你的项目文件、搜索代码、执行命令并直接改写文件——建议在受版本控制的仓库中使用,便于随时回滚。
- 验证是否生效:安装后向 AI 提出一个典型问题,例如「帮我给这个 React Native Web 项目加上详情页导航和 Web 链接映射」。若回答中出现了
NavigationContainer、createNativeStackNavigator、linking配置、以及带类型的参数列表(ParamList),说明技能已正常加载;若回答仍是泛泛而谈或混用 React Router,则可能未生效,可重新检查安装状态(以官方说明为准)。 - 与项目对齐:首次使用时建议让 AI 先 Grep 现有的导航文件,再输出方案,避免它凭空生成与项目结构不符的目录。
该技能的主要功能和特点
- 统一导航 API:以 React Navigation 为核心,一套代码同时适配 React Native 与 React Native Web,避免「App 一套、Web 一套」的双维护。
- 类型安全导航:强制先定义
RootStackParamList这类参数列表类型,再用NativeStackScreenProps、RouteProp等类型约束屏幕组件,让参数缺失、拼写错误在编译期暴露。 - Web URL 与深度链接:提供
linking配置范式,把页面映射为路径(如首页''、详情页details/:id、个人页profile/:userId),同时支持https://与自定义 scheme 前缀,让分享链接、刷新页面、直达某页都能正常工作。 - 三种导航器最佳实践:Stack 用于页面进出,Tab 用于主功能区切换,Drawer 用于 Web 端侧边栏;并给出按窗口宽度切换
permanent/front的响应式写法,适配 768px 断点。 - 鉴权与路由守卫模式:给出「按登录态渲染不同屏幕集合」与「进入屏幕后校验并跳转登录」两种写法,覆盖受保护路由的常见实现。
- 程序化导航:通过
createNavigationContainerRef在组件外部跳转,解决拦截器、推送、全局事件触发跳转的问题。 - 主动提示反模式:明确指出不要用 React Router 替代、不要手动逐层传递 navigation 属性(改用
useNavigation)、不要把导航状态存进 Redux/Context,相当于把团队 Code Review 的经验前置。 - 具备动手能力:凭借写入、编辑、Bash 等工具权限,它不只会讲原理,还能直接生成/修改导航配置文件、运行检查命令。
和「自己翻官方文档」相比,它的优势不在于新知识,而在于把分散在多个文档页里的模式,压缩成一次对话可用的结构化答案,并且自带类型写法和坑位提醒。
如何使用该技能?
以下为通用的分步使用方式(具体触发方式以官方说明为准):
- 描述项目现状:先用一句话交代技术栈与目标,例如「项目是 React Native + React Native Web,使用 React Navigation,现在要加详情页和 Web 直达链接」。
- 让 AI 读取现有代码:明确提出「先读取现有导航文件再给方案」,技能会利用读取/Grep/Glob 能力定位
App.tsx、navigation/目录,避免重复造轮子。 - 定义参数列表:要求先产出类型定义。示例输入:
「帮我定义 RootStackParamList:Home 无参数,Details 需要 id 和 title,Profile 需要 userId」。
预期输出形如:
type RootStackParamList = { Home: undefined; Details: { id: string; title: string }; Profile: { userId: string }; }; - 生成导航器骨架:要求基于上面的类型创建原生栈导航器,示例输出:
并按需切换// 使用 React Navigation 原生栈,一套代码同时适配 App 与 Web const Stack = createNativeStackNavigator<RootStackParamList>();screenOptions(标题、返回按钮颜色等)。 - 配置 Web 链接映射:要求补充
linking配置,把Home映射为''、Details映射为details/:id,并说明前缀包含线上域名与自定义 scheme。 - 补充业务模式:按需追加「登录后才能进入个人中心」「宽屏显示固定侧边栏」「从工具函数中跳转详情页」等需求,技能会分别给出受保护路由、响应式 Drawer、导航引用三种范式。
- 校验与收尾:让 AI 运行已有的类型检查或启动命令(Bash 权限),确认没有未定义的路由名;最后通读一遍,确认没有混入 React Router 相关依赖。
输入示例与输出说明可以总结为一句话:输入是「页面清单 + 参数 + Web 路径 + 权限规则」,输出是「类型定义 + 导航器 + linking 配置 + 关键钩子用法」。
同类型竞品对比分析
| 方案名称 | 定位 | 核心功能 | 安装/使用门槛 | 适用场景 | 优势与不足 |
|---|---|---|---|---|---|
| ReactNativeWeb导航Skill(react-native-web-navigation) | AI 技能:导航实现知识与代码生成助手 | React Navigation 模式、类型安全参数、Web 深度链接、Stack/Tab/Drawer、鉴权守卫、反模式提示 | 需接入支持 Skill 的 AI 环境,项目已有 React Navigation;无需额外运行时依赖 | 已有 React Native Web 工程,需要快速落地或统一导航规范 | 优势:与项目代码结合,能直接改文件、给类型写法;不足:本身不是库,效果依赖 AI 环境与项目上下文 |
| React Navigation(原生库) | 跨端导航事实标准库 | 栈、Tab、抽屉导航,深度链接,钩子,原生性能 | 需自行安装多个子包并阅读文档 | 所有 React Native / React Native Web 项目 | 优势:生态成熟、可控性最强;不足:知识分散,Web 端链接配置需要较多试错 |
| React Router | 纯 Web 路由库 | 浏览器路由、嵌套路由、数据加载 | Web 项目门槛低 | 纯 Web 应用 | 优势:Web 体验成熟;不足:不适用于原生端,跨端项目会导致两套路由 |
| Expo Router | 基于文件系统的路由方案 | 约定式路由、自动深度链接、Web 与原生统一 | 需采用 Expo 生态与特定目录结构 | 新起步的 Expo 项目 | 优势:约定优于配置,链接几乎零成本;不足:对已有工程的目录结构侵入较大 |
| Next.js App Router | Web 框架内置路由 | 服务端渲染、文件路由、数据获取 | 仅 Web,需整体采用 Next.js | 以 Web 为主的产品 | 优势:SEO 与首屏表现好;不足:无法与 React Native 原生端共享导航代码 |
该技能的典型应用场景与实际体验情况
场景一:中小团队从「双套路由」收敛为一套
角色:3~5 人的前端小组,App 与 Web 分别由不同同学维护,Web 端历史遗留了 React Router。
痛点:同一个「进入详情页」的动作,两端参数名不一致,埋点对不上,改一次需求要改两处。
使用方式:让 AI 读取 Web 端现有路由表,逐个映射为 React Navigation 的 screen 与 linking 路径,先统一参数列表类型,再替换跳转调用。
实际体验:上手难度中等偏低,关键收益是「迁移有清单」——AI 会输出路径映射表,便于逐条验收。注意事项:迁移过程中要保留旧链接的可访问性,建议先补齐重定向规则再删除旧路由。
场景二:Web 端分享链接与刷新可用
角色:负责增长的前端工程师。
痛点:用户把链接发给同事后,对方打开只能回到首页;页面刷新后丢失当前页面。
使用方式:要求技能生成 linking 配置,并给出 Home: ''、Details: 'details/:id' 这类映射;确认 NavigationContainer 挂上了 linking 与 fallback。
实际体验:效果直观,一次配置即可覆盖「地址栏变化、刷新、直达」。注意事项:路径参数要与页面里的 useRoute 取值方式对齐,否则会出现「链接能打开但数据为空」。
场景三:一套布局适配桌面与移动浏览器
角色:做后台类跨端产品的前端。
痛点:桌面端希望侧边栏常驻,移动端希望抽屉滑出,两套布局维护成本高。
使用方式:让技能输出基于 useWindowDimensions 的 Drawer 配置,按 768px 断点切换 drawerType 与宽度。
实际体验:代码量小、可读性好,是典型的「知道就很快、不知道要查很久」的知识点。注意事项:断点值需与设计规范一致,避免与全局样式变量冲突。
场景四:登录态驱动路由
角色:负责账号体系的前端。
痛点:未登录用户可能通过深度链接直达受保护页面。
使用方式:使用技能给出的「按登录态渲染不同屏幕集合」+「进入屏幕后校验并跳转登录」双层防护;跳转动作放在 useEffect 中,避免渲染期副作用。
实际体验:方案完备,能同时覆盖「首次进入」与「登录过期后中途失效」两种情况。注意事项:不要在守卫里直接操作导航状态存储,遵循技能的反模式提示。
该技能能为用户带来的价值
- 效率提升:把「查 React Navigation 文档 → 拼配置 → 调类型 → 修 Web 链接」的链路压缩为一次对话,导航相关任务的往返次数明显减少;对熟手是省时间,对新手是省掉整段摸索期。
- 降低门槛:TypeScript 泛型参数、
LinkingOptions、NavigationContainerRef这些偏进阶的写法被整理成可复制的模板,初级工程师也能写出带类型约束的导航代码。 - 结构化的可量化收益:原本需要维护 2 套路由(App + Web)的项目可收敛为 1 套;导航相关文件的类型定义、链接映射、导航器配置三类产物可在一次交互内同时产出;反模式清单直接充当 Code Review 检查项,减少评审轮次。
- 长期价值:技能中沉淀的是「统一 API + 类型安全 + 深度链接」这套工程约定,团队越大、跨端页面越多,收益越明显;同时它与样式、测试等其他 React Native Web 技能形成组合,可支撑完整的跨端开发工作流。
常见问题 FAQ
Q1:这个技能要怎么安装?需要额外引入依赖吗?
不需要额外引入运行时依赖。它是知识与模式型技能,安装动作是把它接入你使用的 AI 编程环境(技能市场搜索 react-native-web-navigation 或按技能ID 14193 添加);项目侧仍需按官方说明安装 React Navigation 相关包。具体安装入口与命令以官方说明为准。
Q2:它收费吗? 技能详情中未提及价格信息,是否收费取决于你使用的技能分发平台或团队订阅方案,请以官方说明为准。项目侧使用的 React Navigation 等开源库按其自身许可执行。
Q3:为什么说「用户不可直接调用」?那我怎么用它? 这意味着它通常不通过手动命令唤起,而是在你提出导航相关需求时由 AI 自动匹配加载。你只需要正常描述任务,例如「给这个页面加上带参数的跳转和 Web 链接」,即可触发相应模式(触发规则以官方说明为准)。
Q4:它和 React Router、Expo Router 怎么选? 如果你已经有 React Native(或 React Native Web)工程,且希望 App 与 Web 共用导航代码,优先选择 React Navigation 路线,本技能正是围绕它展开;如果是纯 Web 项目,React Router 更直接;如果是全新 Expo 项目且能接受文件式路由,Expo Router 的约定式体验更省心。三者不是互斥的「好坏」关系,而是工程阶段与团队结构的匹配问题。
Q5:适合谁用?我是新手能上手吗?
适合正在做或准备做 React Native Web 跨端项目的前端工程师、需要统一导航规范的技术负责人,以及要接入深度链接的增长/运营支持同学。新手可以直接复用技能给出的类型定义与导航器骨架,但建议同步理解 ParamList 与 linking 两处配置的含义,否则后续加页面时容易漏配。