это нарушает какие-то концепции реакта и тд
Норм
а нет каких-то заповедей касаемо инкапсуляции стейта и тд?
Есть заповедь - главное, что работает
Но обычно стейт все же живёт вне компонента, в каком-нибудь стм, т.к. если мы инициализируем локальный стейт в родительском компоненте, то его изменение трегерит рендеринг всех дочерних компонентов
ну я вот тоже об этом думал
Но можно и мемо, useCallback обмазаться
А ещё немного холиварную тему затрагиваем о том, можно ли все выносить в стм, считается неправильным выносить то, что строго используется в рамках одной страницы
setValue это функция
Выниси в контекст и если используется в одном месте, используй. Понадобится еще где-то, никаких проблем, контекст уже готов.
Это сколько же контекстов в приложении получится
Можно один в котором все на свете :D
Или мы опять продолжаем тему контекст - наше все?
короче видишь пропсдриллинг бери и выноси, не видишь, не выноси. Не усложняй, нет тут никакой халиварности.
Холиварность есть, о том, что состояние компонентов выносить в стм - плохая практика, т.к. якобы в стм должен быть только "application state"
вообще это звучит очень логично) и по идеи должно быть понятно даже без доки, без чтения этих заповедей и тд
Если берем эффектор то там в компоненте только какието части стора для рисовалки и эффекты с ивентами которые этот стор меняют, больше ничего
Ну тут речь о том, что мы какой-нибудь флаг $isOpened выносим из компонента в стм или оставляем в компоненте в качестве useState
В случае с эффектором вполне нормально isOpened вынести, а вот в рамках редакса уже стремненько выглядит
да что все заладили с этим эффектором демо версия стейт менеджера
Но тогда стм сложнее взаимодействовать с этим флагом и у нас бизнес-логика будет проникать в ui
классический пример, когда тебе в рамках бизнес логики нужно будет потом контролировать этот isOpened, и ты этого сделать не сможешь и будешь рефакторить
Эффектор как раз таки полноценный state manager, а редакс - это вообще state-container
особенно учитывая, что фичей для управления стейтом и логикой в эффекторе больше, чем в большинстве СТМ, которые максимум дают гет/сет/подписку и в лучшем случае вычислимые поля
только у снг комьюнити вижу такую любовь к нему
потому что сложно популяризировать
Потому что он только в СНГ и продвигается по большей части, извини, маркетологов у нас нет
Обсуждают сегодня