Root
Провайдер для настройки Sagun в приложении.
Сигнатура
function Root(props: {
children: ReactNode;
operationService: OperationService;
componentLifecycleService: ComponentLifecycleService;
}): JSX.Element;
Props
| Prop | Тип | Описание |
|---|---|---|
children | ReactNode | Дочерние компоненты |
operationService | OperationService | Сервис управления операциями |
componentLifecycleService | ComponentLifecycleService | Сервис жизненного цикла компонентов |
Описание
Root — это провайдер, который:
- Создаёт DI контейнер — доступен через
useDI() - Регистрирует системные сервисы —
OperationService,ComponentLifecycleService,UUIDGenerator - Предоставляет контексты — для работы хуков
Базовый пример
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 — доступ к контейнеру
- Начало работы — полное руководство по настройке