expo-quick-actions Hooks实战:useQuickAction与useQuickActionCallback如何选?一篇讲透

发布时间:2026/10/20 13:04:15

expo-quick-actions Hooks实战:useQuickAction与useQuickActionCallback如何选?一篇讲透 expo-quick-actions Hooks实战useQuickAction与useQuickActionCallback如何选一篇讲透【免费下载链接】expo-quick-actionsAdd home screen quick actions / shortcuts and custom icons to your Expo app项目地址: https://gitcode.com/gh_mirrors/ex/expo-quick-actionsexpo-quick-actions 是一个为 Expo 应用添加主屏幕快捷操作Quick Actions和动态应用图标的开源库。本文聚焦它最常被问到的问题两个 Hook ——useQuickAction和useQuickActionCallback—— 到底有什么区别、怎么选。读完这篇你就能在项目中一次性用对它们。什么是 Quick Actions为什么需要 Hooks长按手机桌面图标iOS 长按、Android 长按会弹出应用自定义的快捷入口比如新建聊天搜索拍照。expo-quick-actions 用一套 API 帮你设置快捷项setItems定义快捷操作的标题、图标、参数监听启动事件用户点了哪个快捷项、带着什么参数启动应用通过 Hooks 拿到动态换图标expo-quick-actions/icon子模块可运行时切换应用图标。核心 API 定义在 src/index.ts它暴露了initial冷启动时命中的快捷项、maxCount最大快捷项数量、setItems、isSupported和addListener。两个 Hooks 就是对initial addListener这套组合的封装定义在 src/hooks.ts。两个 Hook 一图看懂核心差异对比项useQuickActionuseQuickActionCallback返回值当前快捷项对象Action \| null无只注册回调会触发组件重渲染吗✅ 会每次快捷项变化都 setState❌ 不会事件在回调里处理典型场景用快捷项数据更新界面导航跳转、埋点统计、全局状态冷启动时命中快捷项通过initial自动读入立即以initial调用一次回调一句话总结要改 UI 用useQuickAction只做事不改 UI 用useQuickActionCallback。useQuickActionCallback不重渲染的事件处理器看 src/hooks.ts 的注释写得很直白它防止组件因操作变化而整体重渲染。内部用useEffect订阅原生事件组件卸载时自动取消订阅并处理了冷启动的initial事件你无需重复处理。适合放在布局组件、全局容器、Provider里做导航、埋点这类全局行为import { useQuickActionCallback } from expo-quick-actions/hooks; function Layout() { useQuickActionCallback((action) { // 全局行为跳转或打点不影响任何界面渲染 console.log(快捷项被触发:, action); }); // ... }为什么不重渲染很重要如果把监听放进一个页面组件并让它重渲染每次用户从快捷项进入都会导致整棵组件树刷新。回调式监听把副作用隔离在事件处理里是更轻量的做法。useQuickAction让界面直接响应快捷项当快捷项的参数本身要驱动 UI比如根据params高亮某个 Tab、展示对应内容就用它。它会返回最近一次启动应用的快捷项没有则为nullimport { useQuickAction } from expo-quick-actions/hooks; function Home() { const action useQuickAction(); // action 变化时组件重渲染据此更新界面 return action ? Detail action{action} / : Welcome /; }官方示例 example/App.tsx 就是这么写的const action useQuickAction()然后把 action 的 JSON 直接渲染到页面上非常直观的演示。实战决策3 个信号快速选型遇到需求时按顺序问自己拿到快捷项后要不要改变界面要 →useQuickAction只是导航 / 埋点 / 发请求→useQuickActionCallback项目在用 Expo Router优先用 src/router.ts 提供的useQuickActionRouting它内部就是基于回调实现的只要快捷项带params.href就会自动router.navigate到对应路由还能传自定义 callback 拦截处理。// app/(root)/_layout.tsx import { useQuickActionRouting } from expo-quick-actions/router; export default function Layout() { useQuickActionRouting(); // 快捷项 params.href 直接变成路由跳转 return Slot /; }⚠️ 官方提醒useQuickActionRouting应放在子布局app/(root)/_layout.tsx而不是根布局因为它会触发导航。别忘了先设置快捷项再监听两个 Hook 只是接收端。发送端是setItems在应用启动时配置一次即可QuickActions.setItems([ { id: compose, title: 新建, icon: compose, params: { href: /compose } }, { id: search, title: 搜索, icon: search, params: { href: /search } }, ]);配合 Config Pluginplugin/src/index.ts还能在app.json里声明静态的 Android 自适应图标、iOS 图标与 iOS 静态快捷项示例项目 example/app.json 给了完整配置参考。常见问题FAQQ1冷启动时用户从快捷项进入回调会触发吗会。两个 Hook 都会检查QuickActions.initial冷启动命中的快捷项会被补发一次不会丢事件。Q2能同时使用两个 Hook 吗可以但没必要在同一个组件里混用。推荐分工全局布局里挂useQuickActionCallback做导航具体页面里用useQuickAction做界面响应。Q3Web 端会报错吗不会。src/index.web.ts 提供了空实现isSupported返回false事件监听为 no-op可安全跨端引用。总结改 UI →useQuickAction只做副作用 →useQuickActionCallback这是唯一的选型主线用 Expo Router 的项目直接用useQuickActionRouting一行代码打通快捷项 → 路由别忘了先setItems再谈监听。掌握这套组合你的 Expo 应用就能拥有原生的主屏幕快捷入口和动态图标体验。【免费下载链接】expo-quick-actionsAdd home screen quick actions / shortcuts and custom icons to your Expo app项目地址: https://gitcode.com/gh_mirrors/ex/expo-quick-actions创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/19 5:31:22

ai-memory init 详解:wiki/db/raw/logs 数据目录结构大起底

ai-memory init 详解:wiki/db/raw/logs 数据目录结构大起底 【免费下载链接】ai-memory Solution for long term memory for agent coding CLIs and to facilitate handoff between different agent vendors 项目地址: https://gitcode.com/GitHub_Trending/ai/ai…

2026/10/20 13:03:53

AI生成内容红线全解析:从审核技术到创作者避坑指南

1. 从AI魔改到AIGC微短剧,为什么2026年的"红线"问题绕不过去过去这一两年,AI生成视频的进化速度着实让人心惊。去年大家还在用"AI魔改"恶搞老电影片段,把台词换成离谱的台词、表情换成夸张的表情;到了今年&am…

2026/10/20 13:03:53

​地球物理大地测量学计算系列之二十三过指定点重力等位面构造

1、过指定点重力等位面构造 利用高阶地球重力场位系数模型,计算过指定点(经度,纬度,大地高)重力等位面相对于指定点的大地高差和重力差格网。利用局部重力场数据,能进一步精化过指定点重力等位面的大地高差和重力差格网。 [功能]…

2026/10/20 13:03:53

STM32F407 挂载 Si5324 时钟芯片配置程序全流程与避坑指南

简介:这份资源面向嵌入式开发与时钟系统设计人员,提供基于STM32F407平台配置Si5324时钟发生器的完整程序方案。Si5324作为可编程多输出频率合成器,支持LVPECL、HCSL、LVDS、LVCMOS等多种输出格式,常用于通信、数据中心与测试设备。…

2026/10/20 13:03:53

国产AI芯片软件生态破局:从CUDA垄断到联合深度适配

上个月我们做国产算力选型评审,小组拿到一块新出的国产AI加速卡,硬件规格表相当漂亮——算力、显存、互连带宽都不弱于我们正在用的国际GPU。可真正把流行的开源大模型跑起来时,第一晚就栽在算子兼容性上报错。那一刻我突然意识到&#xff1a…

2026/10/20 13:03:53

STM32F407驱动Si5324时钟芯片:I2C配置程序与调试避坑指南

简介:这份资源面向嵌入式开发与时钟系统设计人员,提供基于STM32F407平台配置Si5324时钟发生器的完整程序方案。Si5324作为高精度、低相位噪声的可编程频率合成器,广泛用于通信、数据中心与测试设备,资源围绕其寄存器配置、分频系数…

2026/10/20 12:58:49

2026电路设计笔试高频考点全拆解:从运放到状态机的应对策略

每年到了这个时候,总有准备跳槽和秋招的同学来问我同一个问题:硬件方向的笔试题到底该怎么刷?市面上的题库不是太老就是太杂,尤其是电路设计这块,感觉每个公司考的重点都不一样,抓不住规律。我翻了近三年各…

2026/10/19 18:06:35

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/20 1:05:37

单片机C运行时从启动到多任务:中断安全与共享资源冲突

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:05:37

GCC编译四步详解:预处理、编译、汇编、链接实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:05:37

FIW线是什么?FEP注塑线与普通氟塑料线的区别及应用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑