Перейти к содержимому
supastack
Обзор документации
MobileExpo

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 /ru/docs/mobile/first-feature.md (or send Accept: text/markdown).

Создайте первую функцию

Сквозной проход от нового экрана до данных, проверенных сервером.

Задать вопрос об этом руководстве
Открыть в

Прохождение для начинающих

Предварительные требования: прочитайте два руководства для начинающих ниже, завершите локальную настройку Mobile и откройте этот репозиторий в корне в вашем редакторе. Настройки Mobile находятся в apps/mobile/.env.local; Expo не читает корневой .env. Предпросмотр нуждается в доступном бэкенде для реальных данных.

Вкратце: рабочее пространство — это отдельные пользователи, данные и настройки одной команды. Сервер является доверенным сервером; не допускайте попадания ключей провайдера в код браузера и телефона. Миграция — это изменение версии базы данных, при котором создаются или обновляются таблицы. Модель ИИ — это механизм, который отвечает; Каталог моделей — это список доступных идентификаторов моделей и цен на сервере. Поставщик — это внешняя служба, такая как служба искусственного интеллекта, электронной почты или службы выставления счетов. Право — это грант, который позволяет рабочей области использовать функцию. Вебхук — это сообщение, которое одна служба отправляет на URL другой службы.

1. Откройте .agents/skills/add-a-mobile-screen/SKILL.md — или попросите вашего агента кодирования следовать ему — и создайте один небольшой экран, например apps/mobile/app/(app)/ideas.tsx, с логикой в apps/mobile/src/ideas/.

2. Откройте новый экран на устройстве через запущенный предпросмотр и убедитесь, что он рендерится для вошедшего участника.

3. Проверьте вышедший аккаунт и аккаунт второго workspace — всё, что должно оставаться закрытым, должно вернуться отклонённым или отсутствовать, потому что сервер обеспечивает границу.

Для пользовательского кода назовите экран, данные, которые он показывает, кто может его видеть и какие ошибки обрабатывать. Дайте эту задачу вашему агенту кодирования и попросите прочитать 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

Чтение и запись через типизированный клиент

Делайте fetch через apps/mobile/src/api/client.ts, который прикрепляет сохранённую сессию к каждому запросу к EXPO_PUBLIC_API_URL и возвращает типизированные ошибки. Держите полезные нагрузки идентичными веб-контракту — одни и те же конечные точки обслуживают обоих клиентов.

Если экран читает данные workspace, оберните вызов помощниками в apps/mobile/src/offline/, чтобы сбой сети мог откатиться к кэшированной копии — только при сбое сети, никогда после ошибки аутентификации или разрешения.

Позвольте серверу решать вопрос владения

Сервер разрешает вошедшего участника и активный workspace и ограничивает каждую запись по workspaceId. Приложение показывает то, что возвращает сервер; оно никогда не отправляет идентификатор workspace, которому сервер должен доверять.

Если нужные вам данные не имеют конечной точки, добавьте её сначала в бэкенд — бизнес-правила живут на сервере. Скрытая кнопка в приложении не обеспечивает доступ.

Проверка доступа и восстановления

Проверьте вошедшего участника, участника другого workspace, вышедшую сессию и режим полёта: данные участника появляются, чужие данные отклоняются, вышедшее устройство возвращается ко входу, а офлайн-копия обслуживается только при сбое сети.

Доработайте состояния

Дайте экрану состояния загрузки, пустоты и ошибки через общие примитивы, добавьте каждую новую строку во все четыре каталога i18n и подключите маршрут к навигации главной страницы или настроек, чтобы участник мог его действительно найти.