Skip to content

DitoxNrgyExtension.tsx ​

Назначение файла ​

Модуль предоставляет компонент DitoxNrgyExtension, который подключает контейнер ditox-react к механизму создания контроллеров и view-model в React-дереве Nrgy.

Общая информация ​

Компонент нужен в приложениях, где контроллеры или view-model используют @nrgyjs/ditox-extensions вроде withContainer() или withInjections(). Он избавляет от ручной передачи provideDependencyContainer() в каждое место создания контроллера.

Концептуальная архитектура ​

Реализация строится как мост между тремя пакетами:

  1. useDependencyContainer() получает активный контейнер из ditox-react.
  2. provideDependencyContainer(container) записывает контейнер в extension params Nrgy.
  3. NrgyControllerExtension публикует provider в React Context, откуда его забирает useController() из @nrgyjs/react.

Вспомогательный DitoxInjectionParamsProvider выполняется во время создания контроллера и гарантирует, что DI-контейнер берется из актуального React окружения.

Описание публичного API ​

DitoxNrgyExtension: FC<PropsWithChildren> ​

  • children: React-поддерево, внутри которого контроллеры и view-model должны получать ditox-контейнер автоматически.
  • Возвращает NrgyControllerExtension с provider, связывающим ditox-react и Nrgy.

Примеры использования ​

tsx
import React from 'react';
import { DitoxNrgyExtension } from '@nrgyjs/ditox-react';
import { CustomDependencyContainer } from 'ditox-react';

export function Root() {
  return (
    <CustomDependencyContainer container={container}>
      <DitoxNrgyExtension>
        <App />
      </DitoxNrgyExtension>
    </CustomDependencyContainer>
  );
}