使用 Expo Router 构建精美的原生 iOS/Android 应用。涵盖路由结构、原生标签页、动画、模糊效果、液态玻璃效果、SF 符号和平台模式。
Expo 原生UI. 建造生产质量原生移动应用程序, 并采用苹果人界面指南和现代反应原生模式的Expo Router是一项面向实际任务的技能,主要用于OpenClaw / Moltbot / Clawbot.WHAT This S。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
遵循 Apple 人机界面指南(Human Interface Guidelines)及现代 React Native 实践,使用 Expo Router 构建具备生产质量的原生移动应用。
npx clawhub@latest install expo-native-ui
指导如何基于 Expo Router 实现原生移动应用,涵盖以下方面:
expo router, react native, native tabs, sf symbols, expo blur, liquid glass, reanimated, ios, android, mobile app, navigation stack, form sheet, modal, context menu, link preview
请参考以下文档获取详细实现说明:
| 参考资料 | 用途 |
|---|---|
references/route-structure.md |
路由规范、动态路由、分组、查询参数 |
references/tabs.md |
NativeTabs、从 JS 标签栏迁移、iOS 26 特性 |
references/icons.md |
SF Symbols 与 expo-symbols 的配合使用、动画支持、字重控制 |
references/controls.md |
原生 iOS 控件:Switch、Slider、DateTimePicker、Picker |
references/visual-effects.md |
模糊效果与液态玻璃效果 |
references/animations.md |
Reanimated:进入(entering)、退出(exiting)、布局(layout)、滚动驱动(scroll-driven)动画 |
references/search.md |
搜索栏集成、useSearch Hook、数据过滤 |
references/gradients.md |
通过 experimental_backgroundImage 使用 CSS 渐变 |
references/media.md |
相机、音频、视频、文件保存 |
references/storage.md |
SQLite、AsyncStorage、SecureStore |
references/webgpu-three.md |
WebGPU 与 Three.js 用于 3D 图形渲染 |
references/toolbar-and-headers.md |
导航栈头部(Stack headers)、工具栏自定义(iOS) |
请优先尝试 Expo Go,再考虑构建自定义原生包:
npx expo start # 使用 Expo Go 扫描二维码启动
仅在以下情况需要执行自定义构建(npx expo run:ios):
modules/ 目录下含自定义原生代码)@bacons/apple-targets)comment-card.tsxapp/ 目录中混放组件或工具函数| 推荐使用 | 替代方案 |
|---|---|
expo-audio |
expo-av |
expo-video |
expo-av |
expo-symbols |
@expo/vector-icons |
react-native-safe-area-context |
RN SafeAreaView |
process.env.EXPO_OS |
Platform.OS |
React.use |
React.useContext |
expo-image |
内置 img 元素 |
expo-glass-effect |
自定义模糊视图 |
// 始终将根组件包裹在 ScrollView 中,并启用自动安全区插值{children} // 使用 useWindowDimensions,而非 Dimensions.get() const { width, height } = useWindowDimensions(); // 优先使用 Flexbox 布局,而非 Dimensions API
import { Link } from 'expo-router';
// 在 _layout.tsx 中
app/ _layout.tsx —(index,search)/ _layout.tsx — index.tsx search.tsx
// app/_layout.tsx
import { NativeTabs, Icon, Label } from "expo-router/unstable-native-tabs";
export default function Layout() {
return (
);
}
borderCurve: 'continuous' 实现连续圆角(非胶囊形)boxShadow 样式属性,禁用 React Native 旧版 shadow/elevationStyleSheet.createfontVariant: 'tabular-nums' 用于数字计数器对齐selectable 属性// 阴影示例// 连续圆角示例
expo-hapticsheaderSearchBarOptionsselectable 属性img、div)Dimensions.get() —— 必须使用 useWindowDimensionsapp/ 目录中混放组件Platform.OS —— 应使用 process.env.EXPO_OSboxShadowStyleSheet.create@expo/vector-icons —— 必须使用 expo-symbols相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章