跳转到内容
supastack
浏览文档
移动端Expo

For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /zh/docs/mobile/first-feature.md (or send Accept: text/markdown).

构建你的第一个功能

从新建界面到服务器校验数据的端到端演练。

询问本指南
打开方式

初学者演练

先决条件:阅读下面两篇入门指南,完成 Mobile 本地安装,并在编辑器中以根目录打开此存储库。Mobile 设置放在 apps/mobile/.env.local;Expo 不读取根目录的 .env。预览需要一个可访问的后端才能获取真实数据。

简而言之:工作区是一个团队的单独用户、数据和设置。服务器是可信后端;让提供商密钥远离浏览器和电话代码。迁移是创建或更新表的版本化数据库更改。人工智能模型是回答的引擎;型号目录是服务器上可用型号 ID 和价格的列表。提供商是一种外部服务,例如人工智能、电子邮件或计费服务。权利是允许工作区使用某项功能的授权。 Webhook 是一个服务发送到另一个服务的 URL 的消息。

1. 打开 .agents/skills/add-a-mobile-screen/SKILL.md——或让您的编码代理照它执行——并创建一个小界面,例如 apps/mobile/app/(app)/ideas.tsx,其逻辑放在 apps/mobile/src/ideas/。

2. 通过正在运行的预览在您的设备上打开新界面,确认它能为已登录成员正常渲染。

3. 检查未登录账户和第二个工作区账户——必须保密的内容应返回拒绝或为空,因为边界由服务器强制。

对自定义代码,写明界面名称、它显示的数据、谁可以看以及要处理的错误。把任务交给您的编码代理,并要求它先读 AGENTS.md、.ai/PROJECT_CONTEXT.md 以及将触碰文件的 .ai/ 镜像文档;在编辑前列出文件和检查项;并向您展示 diff。使用示例值;切勿粘贴真实密钥。

创建界面

在 apps/mobile/app/(app)/ 下添加一个路由文件——Expo Router 会把该文件变成已登录界面栈中的一个界面。用 apps/mobile/src/ui 的原语(Screen、Card、Title、Detail、AppButton)来组合它,使其继承应用的间距、字体和颜色。

apps/mobile/app/(app)/ideas.tsx
apps/mobile/src/ideas/index.ts
apps/mobile/src/ideas/index.test.ts

通过类型化客户端读写

通过 apps/mobile/src/api/client.ts 获取数据,它会为每个针对 EXPO_PUBLIC_API_URL 的请求附带已存储的会话,并返回类型化错误。保持与 Web 契约一致的载荷——同一组端点同时服务两个客户端。

如果界面要读取工作区数据,请用 apps/mobile/src/offline/ 中的辅助函数包装该调用,使网络故障能回退到缓存副本——仅限网络错误,绝不在认证或权限错误后回退。

让服务器决定所有权

服务器解析已登录成员和当前工作区,并按 workspaceId 限定每条记录。应用显示服务器返回的内容;它绝不发送需要服务器信任的工作区 id。

如果您需要的数据没有端点,请先在后端添加——业务规则在服务器上。应用里隐藏一个按钮并不能强制访问控制。

验证访问和恢复

检查已登录成员、另一工作区的成员、未登录会话和飞行模式:成员数据正常显示,外部数据被拒绝,未登录设备回到登录页,离线副本只在网络错误时提供。

完善各种状态

通过共享原语为界面补上加载、空态和错误状态,把每个新字符串加入全部四个 i18n 目录,并把路由接入首页或设置导航,让成员真正能找到它。