mirror of
https://github.com/gromlab-ru/slm-design.git
synced 2026-08-22 07:30:16 +03:00
style: убрать излишний англицызм
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# React module внутри Domain
|
||||
# Модуль React внутри домена
|
||||
|
||||
> Пояснение framework boundary Domain на примере React.
|
||||
> Пояснение границы фреймворка на примере React.
|
||||
|
||||
## Связанные правила
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
- [`SLM-L3-BUSINESS-A004`](../../rules/level-3.md#slm-l3-business-a004)
|
||||
- [`SLM-L3-ASSEMBLY-R010`](../../rules/level-3.md#slm-l3-assembly-r010)
|
||||
|
||||
## Имя и место module
|
||||
## Имя и место модуля
|
||||
|
||||
Framework-specific module находится непосредственно в Domain и называется именем framework:
|
||||
Зависящий от фреймворка модуль находится непосредственно в домене и называется именем фреймворка:
|
||||
|
||||
```text
|
||||
domains/auth/react/
|
||||
@@ -21,18 +21,18 @@ domains/auth/react/
|
||||
└── index.ts
|
||||
```
|
||||
|
||||
`react` точно обозначает framework и не создаёт пустую промежуточную Group вроде `framework/react` или `bindings/react`. Если Domain действительно поддерживает другой framework, он получает отдельный sibling module, например `vue`.
|
||||
Имя `react` точно обозначает зависимость и не требует пустой промежуточной группы `framework/react` или `bindings/react`. Если домен действительно поддерживает другой фреймворк, он получает отдельный соседний модуль, например `vue`.
|
||||
|
||||
## Роль React module
|
||||
## Роль модуля React
|
||||
|
||||
React module может:
|
||||
Модуль React может:
|
||||
|
||||
- передать готовый `AuthApi` через context/provider;
|
||||
- создать hook доступа к API или framework-neutral state;
|
||||
- связать React lifecycle с subscription API;
|
||||
- реализовать domain-specific React component.
|
||||
- передавать готовый `AuthApi` через контекст и провайдер;
|
||||
- предоставлять хук доступа к API или состоянию;
|
||||
- связывать жизненный цикл React с подпиской;
|
||||
- реализовывать относящийся к домену React-компонент.
|
||||
|
||||
Он не меняет business rules, не создаёт domain errors, не выбирает concrete adapters и не вызывает factory или preset. Сборка остаётся у composition graph owner; React module получает уже готовый instance.
|
||||
Он не меняет предметные правила, не создаёт ошибки домена, не выбирает адаптеры и не вызывает фабрику или типовую сборку. Сборка остаётся у модуля-владельца графа; модуль React получает готовый экземпляр.
|
||||
|
||||
```tsx
|
||||
type AuthProviderProps = PropsWithChildren<{
|
||||
@@ -44,9 +44,9 @@ export const AuthProvider = ({ api, children }: AuthProviderProps) => {
|
||||
}
|
||||
```
|
||||
|
||||
## Reactive state
|
||||
## Наблюдение за состоянием
|
||||
|
||||
Если `AuthApi` предоставляет framework-neutral protocol `getSnapshot` и `subscribe`, React module может использовать `useSyncExternalStore`:
|
||||
Если `AuthApi` предоставляет независимый от фреймворка интерфейс `getSnapshot` и `subscribe`, модуль React может использовать `useSyncExternalStore`:
|
||||
|
||||
```tsx
|
||||
'use client'
|
||||
@@ -62,10 +62,10 @@ export const useAuthState = () => {
|
||||
}
|
||||
```
|
||||
|
||||
Business не импортирует React и не возвращает React hook как единственный способ наблюдать state. React module не создаёт subscription до commit и возвращает cleanup через protocol `useSyncExternalStore`.
|
||||
Модуль `business` не импортирует React и не возвращает React-хук как единственный способ наблюдать состояние. Подпиской и её очисткой управляет `useSyncExternalStore`.
|
||||
|
||||
## Domain UI и compositions
|
||||
## Интерфейс домена и композиции
|
||||
|
||||
Component принадлежит `react`, если его responsibility ограничена domain contract: он работает с `AuthApi`, domain state и stable domain errors. Он не владеет page, route, redirect, product copy или composition нескольких domains.
|
||||
Компонент принадлежит `react`, если его ответственность ограничена контрактом домена: он работает с `AuthApi`, состоянием и устойчивыми ошибками домена. Он не владеет страницей, маршрутом, перенаправлением, продуктовым текстом или композицией нескольких доменов.
|
||||
|
||||
Screen, route outcome, локальный текст ошибки, redirect и page-specific UI остаются в `compositions`. Dependency от React сама по себе не доказывает принадлежность Domain.
|
||||
Экран, результат маршрута, локальный текст ошибки, перенаправление и интерфейс конкретной страницы остаются в `compositions`. Зависимость от React сама по себе не доказывает принадлежность домену.
|
||||
|
||||
Reference in New Issue
Block a user