Перейти к основному содержимому

Root

Провайдер для настройки Sagun в приложении.

Сигнатура

function Root(props: {
children: ReactNode;
operationService: OperationService;
componentLifecycleService: ComponentLifecycleService;
}): JSX.Element;

Props

PropТипОписание
childrenReactNodeДочерние компоненты
operationServiceOperationServiceСервис управления операциями
componentLifecycleServiceComponentLifecycleServiceСервис жизненного цикла компонентов

Описание

Root — это провайдер, который:

  1. Создаёт DI контейнер — доступен через useDI()
  2. Регистрирует системные сервисыOperationService, ComponentLifecycleService, UUIDGenerator
  3. Предоставляет контексты — для работы хуков

Базовый пример

import { 
Root,
OperationService,
ComponentLifecycleService,
asyncOperationsReducer
} from '@iiiristram/sagun';
import { Provider } from 'react-redux';
import { createStore, applyMiddleware, combineReducers } from 'redux';
import createSagaMiddleware from 'redux-saga';
import { call } from 'typed-redux-saga';

// Настройка Redux
const sagaMiddleware = createSagaMiddleware();
const store = createStore(
combineReducers({
asyncOperations: asyncOperationsReducer,
}),
applyMiddleware(sagaMiddleware)
);

// Создание сервисов
const operationService = new OperationService();
const componentLifecycleService = new ComponentLifecycleService(operationService);

// Запуск сервисов
sagaMiddleware.run(function* () {
yield* call(operationService.run);
yield* call(componentLifecycleService.run);
});

// Приложение
function App() {
return (
<Provider store={store}>
<Root
operationService={operationService}
componentLifecycleService={componentLifecycleService}
>
<MyApp />
</Root>
</Provider>
);
}

С SSR

// Сервер
const hash = {};
const operationService = new OperationService({ hash });

// После рендеринга — сериализовать данные
const ssrContext = operationService.getHash();

// Клиент
const operationService = new OperationService({ hash: window.__SSR_CONTEXT__ });

См. также

  • Service — базовый класс сервиса
  • useDI — доступ к контейнеру
  • Начало работы — полное руководство по настройке