@vladimir_vist

Как совместить классы и React?

Есть уже готовая логика в классах, frontend будет переписывать с JQuery на React. Раньше были компоненты:

- CProductsViewComponent
--- CProductsListComponent
------ CProductItemComponent
--- CProductSideFilterComponent
--- CProductTopFilterComponent

И есть классы которые ничего не выводят, и не работают с DOM, главный класс называется CProductsView, в нем уже есть CProductsTopFilter и другие классы, он их объединяет. Компоненты на JQuery просто брали данные из своих классов, например из CProductsView, и действия выполняли тоже через эти классы, нажимаем кнопку, вызывается CProductsView.Search()

В React можно создать компонент ProductsViewComponent, но где хранить класс CProductsView? Как я понял useState/setState для этого не подходит, оно не для сложных объектов, если я вызову CProductsView.Search() то при следующем проходе функции оно сбросится до оригинального, и вообще модификация без setState не советуется. Как совмещать?
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
Использовать mobx. Прямо один в один впишется. Методы классов станут экшенами (в мобиксовом понимании, см. доку), данные - наблюдаемыми полями и конструкторами. Экземпляры классов можно хранить в useRef или том же useState, если ему передать функцию создания экземпляра. Экземпляры общеиспользуемых классов прокидывать вниз через контекст. Можно совсем упороться и поюзать DI-контейнер.

При должной сноровке структура приложения будет простой и прозрачной.

Подробностей много, читай мануалы к реакту и mobx.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы