Size: a a a

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

2019 December 02

MS

Misha Shandra in GraphQL — русскоговорящее сообщество
Misha Shandra
Всем хай, при создании компонента для него должны применяться стандартные настройки, пользователь может сохраниь определённые настройки для одного компонента и/или сохранить для себя один темплейт и тогда все компоненты без собственных конфигураций должны принимать темплейтные настройки (как бы заменять стандартные настр. для всех, на свои). Я создаю для этого 3 таблицы: стандартные_настройки (задаёт админ, только одно поле), темплейтные(сам юзер, только для себя, только одно поле), и просто_настроки(для каждого компонента отдельно). Нормальный ли подход, а то я тут напридумывал а выглядит как лажа ????
да и все 3 таблицы почти что одинаковые получаються
источник

A

Artyom in GraphQL — русскоговорящее сообщество
Pavel @nodkz
Ну он так под капотом и работает, дожидается пока все запросы выполнятся.

Если у тебя в коде apollo-хуки, то import { getDataFromTree } from ‘@apollo/react-ssr’ (https://github.com/apollographql/react-apollo/blob/master/packages/ssr/src/getDataFromTree.ts)

Если у тебя аполло компоненты, то import { getDataFromTree } from 'react-apollo’;

Ну и совсем экзотика если у тебя Relay https://github.com/relay-tools/react-relay-network-modern-ssr#server
нет, он не работает так, он не дожидается пока все запросы выполнятся, я протестировал
источник

A

Artyom in GraphQL — русскоговорящее сообщество
client.extract(); и setTimeout(()=>client.extract(), 2000) дадут разные результаты
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Artyom
client.extract(); и setTimeout(()=>client.extract(), 2000) дадут разные результаты
Если у тебя запрос в запросе, то да он краулит только первый уровень запросов.
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Была у меня такая фигня с Релей. Я там "рендерил" 3 раза апку, чтоб полный кеш аолучить.
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Вобщем ССР работает везде, просто надо так хорошо поковыряться и помучиться
источник

ДР

Димка Реактнативный 🛸 in GraphQL — русскоговорящее сообщество
Почему при первом обновлении все ок, а при втором вылетает ошибка?
 
"The variables input contains a field name '__typename' that is not defined for input object type 'UpdateJobInput'
источник

A

Artyom in GraphQL — русскоговорящее сообщество
Pavel @nodkz
Если у тебя запрос в запросе, то да он краулит только первый уровень запросов.
даже первого не ждет! возможно просто ты запускал рендер перед вызовом getDataFromTree, поэтому у тебя успевали данные попасть в кэш
источник

A

Artyom in GraphQL — русскоговорящее сообщество
renderToStaticMarkup можно запустить и перед getDataFromTree и после
источник

A

Artyom in GraphQL — русскоговорящее сообщество
возможно у тебя попали бы все данные в кэш, если бы ты просто подождал
источник

A

Artyom in GraphQL — русскоговорящее сообщество
надо протестить
источник

A

Artyom in GraphQL — русскоговорящее сообщество
пои идее чтобы не совершать лишних запросов нужно ssr: true на всех хуках вешать
источник

A

Artyom in GraphQL — русскоговорящее сообщество
иначе будет непродуктивный перерасход памяти
источник

A

Artyom in GraphQL — русскоговорящее сообщество
вобщем это не то, что я ожидал от серверного рендеринга
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Вобщем суть SSR проста как валенок:
1) Запускаешь первый рендер приложения, чтоб дернулись все GraphQL-запросы
2) Мониторишь нетворк лейер пока выполнятся все запросы.
3) После того как нетворк лейер выполнил все запросы, получаешь все данные из стора/кеша
4) Рендеришь приложение второй раз, передавая ему уже готовый стейт/кеш полученный на предыдущем шаге.
5) После второго рендера получаешь полную разметку, которую отдаешь клиенту. Ну это если у тебя запросы стали переиспользовать синхронно данные из стора/кэша.
источник

A

Artyom in GraphQL — русскоговорящее сообщество
вопрос встает как передать данные на шаге 4
источник

A

Artyom in GraphQL — русскоговорящее сообщество
при рендере на шаге 4 запросы по идее должны подтянуться из кеша, если на них не стоит networ-only
источник

A

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

A

Artyom in GraphQL — русскоговорящее сообщество
Pavel @nodkz
Вобщем суть SSR проста как валенок:
1) Запускаешь первый рендер приложения, чтоб дернулись все GraphQL-запросы
2) Мониторишь нетворк лейер пока выполнятся все запросы.
3) После того как нетворк лейер выполнил все запросы, получаешь все данные из стора/кеша
4) Рендеришь приложение второй раз, передавая ему уже готовый стейт/кеш полученный на предыдущем шаге.
5) После второго рендера получаешь полную разметку, которую отдаешь клиенту. Ну это если у тебя запросы стали переиспользовать синхронно данные из стора/кэша.
все так и есть, только об этом не написано в документации
источник

A

Artyom in GraphQL — русскоговорящее сообщество
как мониторить нетворк лэйер?
источник