Size: a a a

GraphQL — русскоговорящее сообщество

2021 October 10

I

I in GraphQL — русскоговорящее сообщество
Привет коллеги, поделитесь опытом. Что имеется:  graphql + apollo на беке и клиенте. Нужно как то на клиенте хендлить локальный стейт. Знаю что в аполло есть локал стейт но он как то непривычно выглядит и не нашел много инфы про использования в продакшене. Итак на что все же лучше обратить внимание для работы с ui стейтом (например меню, модалки какие то) 1) аполло локал стейт 2) реактивные переменные которые тоже идут с коробки в аполло 3) аполло + effector например, или redux
источник

y

yel' in GraphQL — русскоговорящее сообщество
ну мы у себя makeVar используем, они очень простые, тупо как глобальные переменные работают и делай с ними что хочешь. Кто-то я слышал что redux использует, но мне кажется это оверкил. @client поля в apollo очень неудобные, лучше даже не трогать их.

Другие не пробовали. Так что интересно тоже у кого какие стейт менеджеры стоят с apollo, чтобы по красоте всё было.
источник

I

I in GraphQL — русскоговорящее сообщество
Сейчас проект небольшой но хочется заложить надежный фундамент:)Единственное что смущает, получается отходим от классической флакс архитектуры когда единственный источник правды. Видел мнения что аполло + (редакс, мобх и тд) тоже норм тема но каких то годных статьей или докладов на эту тему увы не нашел
источник

АК

Алексей Козин... in GraphQL — русскоговорящее сообщество
У меня локальный стэйт через useState, ремоут стэйт через react query, сами запросы GraphQL, бэк Apollo
источник

I

I in GraphQL — русскоговорящее сообщество
А стейт который нужно шерить между компонентами но он все равно локальный?
источник

АК

Алексей Козин... in GraphQL — русскоговорящее сообщество
useState на самом верху, детям кидаю колбэки
источник

NF

No Force in GraphQL — русскоговорящее сообщество
А react context чем не стейт? Почему его бы не заиспользовать?
источник

АК

Алексей Козин... in GraphQL — русскоговорящее сообщество
Да, через него удобно кидать колбэки
источник

YM

Yana Misyuchenko in GraphQL — русскоговорящее сообщество
А чем это лучше тех же ReactiveVariables? Чтобы лишних обёрток внутри компонентов не было?
источник

I

I in GraphQL — русскоговорящее сообщество
Контекст это же не инструмент для стейт менеджмента:) поменять темизацию или язык например это да
источник

I

I in GraphQL — русскоговорящее сообщество
Вы тоже реактивные переменные используете?
источник

NF

No Force in GraphQL — русскоговорящее сообщество
Почему? Он же хранит именно стейт, и позволяет пробрасывать этот стейт между компонентами
источник

I

I in GraphQL — русскоговорящее сообщество
Это отдельная тема которая уже уйдет глубоко в оффтоп от тематики чата:) Если коротко то вот просто отличнейший разбор почему контекст это не стейт менеджмент https://blog.isquaredsoftware.com/2021/01/context-redux-differences/#final-thoughts
источник

I

I in GraphQL — русскоговорящее сообщество
А вы сталкивались с какими то подводными при использовании makeVar?
источник

I

I in GraphQL — русскоговорящее сообщество
самый большой трабл контекста что все компоненты которые на него подписаны перерендериваются даже если та часть данных которая нужна им не изменилась
источник

y

yel' in GraphQL — русскоговорящее сообщество
из-за своей простоты (я их воспринимаю тупо как глобальные переменные) ими начинаешь пользоваться по любой хуйне. Ещё у них синтаксически никак не выражен редьюсер. Поэтому если проект большой становится, советую отдельно делать какой-нибудь файлик типа componentNameVar.ts под каждый компонент. Там хранить makeVar и редьюсер под него на экспорт, если там какая-то сложная логика.
Иначе оглянуться не успеете, как у вас всё превратиться с ними в кашу. Где вы изменяете стейт, где создаёте, ничерта непонятно станет.
источник

NF

No Force in GraphQL — русскоговорящее сообщество
Я не особо опытен в этом плане, мне кажется что чтобы сайт начал лагать это надо ну прям реааально огромный проект, а большинство среднего размера, или я ошибаюсь?
источник

I

I in GraphQL — русскоговорящее сообщество
Спасибо за совет, попробую их но что то интуиция подсказывает что придется тащить старый добрый redux:)
источник

I

I in GraphQL — русскоговорящее сообщество
Тут скорее дело в подходе, лучше сразу делать хорошо чем делать как нибудь с оговоркой что проект небольшой или так быстрее и тд:)
источник

y

yel' in GraphQL — русскоговорящее сообщество
зависит от логики которая в каждом компоненте. Там может быть всего 5 компонентов, но в каждом какие-нибудь сложные подсчёты и они будут тригерится на каждый ререндер
источник