Size: a a a

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

2021 November 01

y

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

ОЛ

Олег Линьков... in GraphQL — русскоговорящее сообщество
Ваш резолвер может выступать таким кешем ведь)
источник

DK

Dm K in GraphQL — русскоговорящее сообщество
у нас достаточно тяжелые запросы, мы создаем еще один уровень хуков, где прячем всю логику - апдейт, ремув,  апдейт кеша и тд. вотчера на генерацию типов и хуков не добавляли нету необходимости. yну и мы еще сидим на 2 аполло)
источник

A

Alex in GraphQL — русскоговорящее сообщество
Мы у себя используем typed document node. Вопрос почему вы не используете?

Ещё мы все запросы и мутации врапаем в хуки ручками и возвращаем нормализованные данные. Это упрощает нам жизнь если что-то меняется в схеме. Также гораздо проще рефакторить код.

Полностью отказались от локального стейта аполло. Есть гараздо проще альтернативы и работают гараздо быстрее, аполло кэш ну очень медленный, когда запросов становится много.
источник

DK

Dm K in GraphQL — русскоговорящее сообщество
плюсую за typed document node, именно эти и юзаем. а что для стейта используете?
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
typed-document-node вы скорее всего с urql используете. С аполло клиентом он менее удобен.

У нас все запросы и фрагменты уникальны. К каждой компоненте идет свой набор "запчестей" графкуэль запросов. И эти запчасти всегда лежат рядом с компонентой, чтоб открывая папку сразу видеть насколько компонента и как зависит от сервера. Ну и изменения любой запчасти, не повлияет на другие компоненты, поэтому у нас рефакторинг тоже достаточно простой.

Аполло действительно тормознутый, но для большинства задач его хватает с лихвой. Там где большие таблицы, или идет частое обновление мы без кеша и нормализации юзаем. Но таких мест раз два и обчелся. У вас я так понимаю urql используется?
источник

OH

One Hero in GraphQL — русскоговорящее сообщество
источник

A

Alex in GraphQL — русскоговорящее сообщество
Jotai
источник

DK

Dm K in GraphQL — русскоговорящее сообщество
интересно. удобна ли такая атомность для хранения больших данных с графкл?
источник

DK

Dm K in GraphQL — русскоговорящее сообщество
апдейт кеша есть?
источник

A

Alex in GraphQL — русскоговорящее сообщество
Нет мы не дублируем данные из кеша в локальный стейт. Только локальные поля. Могу привести реальный пример: есть массив из тысячи статей. Нам необходимо добавить чекбоксы к каждой статье. Самый очевидный вариант просто расширить тип статьи полем checked, но при таком подходе аполло кеш очень медленный когда нужно выделить все статьи или несколько статей. Что мы делаем, храним ids с клиентскими полями в jotai, пишем локальный резолвер в typePolicies - getArticleById. Каждый компонент статьи получает id и checked и вызывает getArticleById для получения данных с кеша. Убиваем 2 зайцев, убрали проблему с перформансом, переререндер происходит только там где надо. Раньше так делали на редаксе.
источник

A

Alex in GraphQL — русскоговорящее сообщество
У тебя в видео есть кусок про improtReactHooksFrom. Где можно глянуть на твою имплементацию?
источник

A

Alex in GraphQL — русскоговорящее сообщество
Вы не шарите фрагменты в приложении? Т.е. все фрагменты у вас уникальны?
источник
2021 November 02

DK

Dm K in GraphQL — русскоговорящее сообщество
отличнй пример, локальный резолвер в смысле через филд резолвер и @client директивой? Мы конечно с резолверами не заморачиваемся, у нас в кеше нету больших листов максимум 50 айтемов, но да, если надо селектить айтемы то в редаксе храним айдис
источник

DK

Dm K in GraphQL — русскоговорящее сообщество
источник

A

Alex in GraphQL — русскоговорящее сообщество
Да да филд резолвер
источник

V

Viktor in GraphQL — русскоговорящее сообщество
Спасибо)
источник

DK

Dm K in GraphQL — русскоговорящее сообщество
хмм, так зачем вообще резолвер на чекед, если хранить айдихи в атоме. на бек отправляется скорее всего что-то типа {action: ‘remove’, ids: […]}
источник

A

Alex in GraphQL — русскоговорящее сообщество
Резолвер не на чекед а на данные статьи которые в кеше
источник

A

Alex in GraphQL — русскоговорящее сообщество
Т.е. чекед и айди в атоме, все остальное в кеше
источник