Files
slm-design/docs/examples/react/factory-composition.md
S.Gromov 5874d3604c
All checks were successful
CI/CD Pipeline / build (push) Successful in 20s
CI/CD Pipeline / version (push) Successful in 5s
CI/CD Pipeline / docker (push) Successful in 1m15s
CI/CD Pipeline / deploy (push) Successful in 7s
docs: добавить примеры React
- добавлен раздел примеров React в сайдбар
- добавлены примеры создания и композиции фабрик
- перенесены подробные React-примеры из раздела модулей
- обновлены сгенерированные артефакты документации
2026-05-11 20:56:41 +03:00

2.1 KiB
Raw Blame History

title, description
title description
Композиция фабрик Пример композиции business-фабрик на уровне screen-модуля в React-проекте

Композиция фабрик

Раздел показывает, как собрать API нескольких business-модулей в React screen-модуле. Пример подходит для простой композиции, когда screen сам является точкой использования доменов.

Идея

Композиция фабрик выполняется в модуле-потребителе: screen, layout или другом модуле группы «Композиция». Business-модули не импортируют runtime-код друг друга напрямую, а cross-domain зависимости получают только через аргументы фабрик.

Структура screen-модуля

screens/home/
├── home.screen.tsx
└── index.ts

Сборка фабрик

Файл: screens/home/home.screen.tsx.

import { customerFactory } from '@/business/customer'
import { orderFactory } from '@/business/order'

const customer = customerFactory()
const order = orderFactory({ customer })

const { useOrder, OrderCard } = order

export const HomeScreen = () => {
  const currentOrder = useOrder()

  return <OrderCard order={currentOrder} />
}

customerFactory создаётся первой, потому что orderFactory зависит от части API домена customer. Модуль order не импортирует customer в runtime — зависимость передаётся снаружи.

Публичный API screen-модуля

Файл: screens/home/index.ts.

export { HomeScreen } from './home.screen'

Screen экспортирует только собственный публичный API. Собранные экземпляры business API остаются деталями реализации screen-модуля.