Skip to content

Назначение data

data владеет данными приложения и правилами их преобразования.

Полный стек

Core не задаёт конкретный transport. Его реализация для принятого проектного стека описана отдельно в Full Stack Guide.

Что принадлежит data

Для домена posts здесь могут находиться:

  • Valibot schemas внешних данных;
  • DTO, полученные из schemas;
  • mappers;
  • типы приложения;
  • MobX stores;
  • public API slice.
txt
data/posts/
  posts.schema.ts
  posts.dto.ts
  posts.mapper.ts
  posts.store.ts
  posts.types.ts
  index.ts

Что не принадлежит data

data не должен знать:

  • как выглядит React-страница;
  • какой route сейчас открыт;
  • куда выполнить navigation;
  • как устроена форма в JSX;
  • как отображается ошибка пользователю.

Это ответственность React-слоя.

Поток записи во внешний источник

Если форма создаёт или редактирует пост:

txt
React Hook Form values

mapper

request DTO

внешняя граница

Способ отправки request не задаётся DSA.

Поток чтения

txt
unknown
  ↓ Valibot
DTO
  ↓ mapper
тип приложения

MobX store

React

Например, внешний контракт может использовать published_at, а приложение — publishedAt: Date. Это различие локализуется внутри data/posts.

Правило минимальности

Не каждый slice обязан иметь все возможные файлы.

Если данные уже имеют удобную форму, mapper может не понадобиться. Если нет store-состояния, не создавайте пустой store ради структуры.

Добавляйте роль только тогда, когда она решает реальную задачу.