@danyvasnafig

Использовать ли hoc если в трех местах используются одинаковый state?

У меня на трех страницах, и соответственно в трех разных компонентах в componentDidMount() запрашивается с базы данных список факультетов вуза. И дальше в стейте создается поле Faculty, где хранятся факультеты, которые в дальнейшем в виде selecta я вывожу на эти три страницы. Я так понимаю лучше создать hoc, в котором я получу эти факультеты, и передавать их уже оттуда в компоненты?
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ответы на вопрос 2
ElForastero
@ElForastero
Если используется Redux или другая state-management библиотека, лучше ложить в store такие данные.

Если таких библиотек нет, и компоненты функциональные, можно написать хук.

Если class-компоненты, тогда можно и HOC создать.

Можно и Context создать, но поскольку страницы разные, этот вариант я бы не стал применять.
Ответ написан
@twoone
Вот смотрите. Класс, это шаблон по которому создаются объекты. Состояние класса, то есть его поля, уникальны для каждого экземпляра. Независимо от количества экземпляров класса, его методы всегда будут работать именно с его состоянием, так как они связанны контекстом. Другими словами логика находящаяся в методах связанна с объектом класса.

Так вот хуки это попытка реализовать поведение методов в функциях. То есть определяя хук вы привязываете его к жизненному циклу функционального компонента и его состоянию. Проще говоря для каждой копии функционального компонента создается отдельная копия хука.

Из этого следует что обращатся за данными на сервер в хуке нельзя, поскольку каждый компонент использующий ваш хук будет выполнять отдельный запрос к БД. Хук это не сервис. Хук это попытка реализации поведения методов в функциональных компонентах.

Когда разные компоненты нуждаются в одних и тех же данных их получение и хранение выносят на отдельный соответствующий слой(слои). Для реакта это redux/mobx.
Ответ написан
Ваш ответ на вопрос

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

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