Size: a a a

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

2021 March 20

EG

Eugene G in GraphQL — русскоговорящее сообщество
Shuh
ApolloClient или просто fetch
Ну допустим fetch можно несколько запросов дернуть в useeffect и по окончании бахнуть в какой-нибудь Стейт, но на реакте лучше использовать хуку useQuery из Аполло и условный рендеринг, за одно и кэш аполловский будет облегчать жизнь.
источник

АК

Алексей Козин... in GraphQL — русскоговорящее сообщество
Eugene G
Ну допустим fetch можно несколько запросов дернуть в useeffect и по окончании бахнуть в какой-нибудь Стейт, но на реакте лучше использовать хуку useQuery из Аполло и условный рендеринг, за одно и кэш аполловский будет облегчать жизнь.
Есть еще вариант https://react-query.tanstack.com/
источник

S

Shuh in GraphQL — русскоговорящее сообщество
Eugene G
Ну допустим fetch можно несколько запросов дернуть в useeffect и по окончании бахнуть в какой-нибудь Стейт, но на реакте лучше использовать хуку useQuery из Аполло и условный рендеринг, за одно и кэш аполловский будет облегчать жизнь.
Согласен, но вопрос стоял как сделать так чтоб все useQuery стартанули параллельно и зарезолвились одновременно.
источник

ОД

Олег Дутченко... in GraphQL — русскоговорящее сообщество
Shuh
Согласен, но вопрос стоял как сделать так чтоб все useQuery стартанули параллельно и зарезолвились одновременно.
... эм, никак!
по-любому кто-то кого-то будет ждать
источник

ОД

Олег Дутченко... in GraphQL — русскоговорящее сообщество
Eugene G
Ну допустим fetch можно несколько запросов дернуть в useeffect и по окончании бахнуть в какой-нибудь Стейт, но на реакте лучше использовать хуку useQuery из Аполло и условный рендеринг, за одно и кэш аполловский будет облегчать жизнь.
норм решение
источник

EG

Eugene G in GraphQL — русскоговорящее сообщество
Shuh
Согласен, но вопрос стоял как сделать так чтоб все useQuery стартанули параллельно и зарезолвились одновременно.
Ну предположу, что это от малого опыта в реакте, так сформулирован вопрос. Скорее всего проблемы начинаются тогда, когда реакт рендерит компонент, не дождавшись результата запросов.
источник

IG

Ivan Gorshkoff in GraphQL — русскоговорящее сообщество
Необходимо создать 3д тур на сайте с мини-играми(несколько взаимодействий с персонажами в виде диалога).
Кто может выполнить - стучите в лс, дам более подробное тз
источник

EG

Eugene G in GraphQL — русскоговорящее сообщество
Олег Дутченко
норм решение
Иногда имеет право на жизнь, но в случае когда один из запросов повторяется этого не достаточно.  Если есть необходимость обойтись без сторонних клиентов, то Стейт стоит заменить на редьюсер, а эффекта использовать два или более. Ну и в редьюсере хранить не только данные, но и состояние запросов. Ну и вообще я не рекомендую сливать несколько запросов в один в реакте.
источник

S

Shuh in GraphQL — русскоговорящее сообщество
Eugene G
Иногда имеет право на жизнь, но в случае когда один из запросов повторяется этого не достаточно.  Если есть необходимость обойтись без сторонних клиентов, то Стейт стоит заменить на редьюсер, а эффекта использовать два или более. Ну и в редьюсере хранить не только данные, но и состояние запросов. Ну и вообще я не рекомендую сливать несколько запросов в один в реакте.
вопрос стоял как загрузить все квери  а потом уже отрендерить реакт как я понял. Вот и предполодил что можно сделать Promise.all а потом уже вызвать render у реакта. Можно даже сделать два реакт приложение, первое будет грузить скелетон и плейсхолдеры как у facebook, второе будет уже реальным приложением с данными после глобального резолва
источник

EG

Eugene G in GraphQL — русскоговорящее сообщество
Shuh
вопрос стоял как загрузить все квери  а потом уже отрендерить реакт как я понял. Вот и предполодил что можно сделать Promise.all а потом уже вызвать render у реакта. Можно даже сделать два реакт приложение, первое будет грузить скелетон и плейсхолдеры как у facebook, второе будет уже реальным приложением с данными после глобального резолва
Я не пытаюсь вас обвинить, такой способ тоже возможен. Просто рассуждаю вслух и делюсь своим "очень важным" мнением.
А вот про два приложения можно подробнее, ссылку если не сложно.  (у меня причёска дурацкая, вероятно поэтому меня в гугле забанили)
источник

S

Shuh in GraphQL — русскоговорящее сообщество
Eugene G
Я не пытаюсь вас обвинить, такой способ тоже возможен. Просто рассуждаю вслух и делюсь своим "очень важным" мнением.
А вот про два приложения можно подробнее, ссылку если не сложно.  (у меня причёска дурацкая, вероятно поэтому меня в гугле забанили)
минимум как то так,  
render(<Skeleton />, el);
Promise.all([queries]).then(() => render(<App />, el)).catch(() => render(<AppError />, el))
источник

S

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

S

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

S

Shuh in GraphQL — русскоговорящее сообщество
в общем все зависит от вашей фантазии 😄
источник

y

yel' in GraphQL — русскоговорящее сообщество
Shuh
вопрос стоял как загрузить все квери  а потом уже отрендерить реакт как я понял. Вот и предполодил что можно сделать Promise.all а потом уже вызвать render у реакта. Можно даже сделать два реакт приложение, первое будет грузить скелетон и плейсхолдеры как у facebook, второе будет уже реальным приложением с данными после глобального резолва
а как ты делаешь Promise all из useQuery, если он не возвращает промис?
источник

y

yel' in GraphQL — русскоговорящее сообщество
я хотел недавно lazy query функцию через промис оформить и нихуя. На гитхабе даже ишью висит с этой темой
источник

S

Shuh in GraphQL — русскоговорящее сообщество
yel'
а как ты делаешь Promise all из useQuery, если он не возвращает промис?
Есть apolloClient.query, а там уже  кэш сделает своё дело
источник

y

yel' in GraphQL — русскоговорящее сообщество
Shuh
Есть apolloClient.query, а там уже  кэш сделает своё дело
надо попробовать, просто ещё хз как такая конструкция у меня смотрется будет. Обычно хуки использую из graphql-codegen
источник

S

Shuh in GraphQL — русскоговорящее сообщество
Да нормально будет смотрется, в nextjs это common pattern
источник

y

yel' in GraphQL — русскоговорящее сообщество
но промиса порой очень не хватает, особенно из lazy query. Впору костыль написать
источник