Клиент Apollo GraphQL для React-приложений

  Рет қаралды 27,856

Михаил Непомнящий

Михаил Непомнящий

Күн бұрын

Apollo GraphQL позволяет гибко работать с сетевыми запросами и выступает в роли самостоятельного стейт менеджера. В рамках видео мы разберем его использование с React, хотя Apollo может быть использован с любым frontend-приложением, в том числе и с ванильным.
Тайм-коды:
00:00 Об Apollo GraphQL
01:26 Тестовый graphql сервер
03:05 Зависимости
04:40 Apollo Client и Provider
07:38 GraphiQL Playground
09:00 gql и useQuery
13:53 Apollo DevTools
15:35 Повторное использование данных
17:40 useMutation
24:20 Рефетч данных после мутации
25:47 Обновление кэша
29:21 Мутации изменения и удаления
37:10 Альтернативное обновление кэша
41:07 Обзор проекта
Стартовый проект: github.com/michey85/apollo-qq...
Итоговый код: github.com/michey85/apollo-qq...
#graphql #apollo
Мои курсы по вебу с купонами:
✅ mishanep.com/
📢 Поддержка канала:
/ mishanep
www.tinkoff.ru/rm/nepomnyasch...
paypal.me/mishanep

Пікірлер: 69
@user-tj8yn5tl2h
@user-tj8yn5tl2h Жыл бұрын
Интересно будет посмотреть graphql и redux toolkit в связке. А за видео большое спасибо.
@d_r_robot
@d_r_robot Жыл бұрын
Плюсую
@notaddtry
@notaddtry Жыл бұрын
Поддерживаю
@weynemeynen
@weynemeynen Жыл бұрын
...а он, redux toolkit, там где apollo/graphql, по ходу и не нужен
@user-tj8yn5tl2h
@user-tj8yn5tl2h Жыл бұрын
@@weynemeynen у Apollo есть общий Стейт менеджер как у redux toolkit? Например тебе надо открывать модальное окно из разных компонентов. И Apollo это прежде всего это работа с запросами на примере rest только с помощью graphql и схем.
@CJIu3eHb
@CJIu3eHb Жыл бұрын
@@user-tj8yn5tl2h Еще есть вопрос сохранения данных на клиенте. Вроде есть некий "apollo-cache-persist", но что делать, если хранить нужно не только запросы, а еще что-нибудь. В этом случае redux toolkit выглядит универсальнее. А вот насколько он удобнее для запросов - это вопрос.
@hidden_from_you
@hidden_from_you Жыл бұрын
Здравствуйте Михаил Непомнящий, Отличная подача, Спасибо за контент! Было бы здорово, если вы будите продолжать освещать данную тему по Apollo GraphQL, и к примеру объяснили темы концепции архитектуры "Apollo Client & Client-side Architecture", нюансы с кешированием, как правильно выполнять и настраивать пагинацию (особенно, когда индексы страниц могут сбиваться), и т.д. либо другие полезные темы. :)
@1nightstarlight3
@1nightstarlight3 Жыл бұрын
Михаил, отличнейшая подача и материал. Очень актуально как всегда. Хотелось бы только видеть всё тоже самое, только на ts, вряд ли кто-то использует js сейчас.)
@sh0ny
@sh0ny Жыл бұрын
Огонь видео! Спасибо за подробное и четкое объяснение. только вот момент в конце с db.js хотелось бы разобрать подробнее
@vladimirmuratov2220
@vladimirmuratov2220 Жыл бұрын
Спасибо, Михаил. Очень доходчиво объясняете 😊
@pashabezk
@pashabezk Жыл бұрын
Спасибо большое! Видео помогло разобраться с Apollo и GrapQL. Иду пробовать на практике!
@dominskyi7857
@dominskyi7857 Жыл бұрын
Велике дякую за інформацію і окрема вдячність за стартовий код на гітхабі. Просто суепр💻
@mr.zxzxzxz3816
@mr.zxzxzxz3816 11 ай бұрын
лучший канал. для человека который умеет читать доку , эти ролики заходят на ура для ознакомления. прохожу курс про редакс, планирую потом курс по тайп скрипт у вас ж приобрести. спасибо!
@user-vm2db5cq1g
@user-vm2db5cq1g Жыл бұрын
Как всегда отличное видео! поддержу вопрос по поводу новых видео про подписки и пагинацию с использованием кэша, а также работу с TS. Спасибо!
@Lazy1097
@Lazy1097 Жыл бұрын
Огромное спасибо, реально классный контент, надеюсь некс видео graphql и redux toolkit, было бы здорово
@vladtkachenko6822
@vladtkachenko6822 Жыл бұрын
не думал, что скажу когда-то, но лайк ещё до просмотра )
@curillaenator
@curillaenator Жыл бұрын
Спасибо! Отличнейшая подача материала! (Apollo GraphQL)
@user-bl4dl9ke7b
@user-bl4dl9ke7b Жыл бұрын
Спасибо больше, просто нет слов, одна благодарность!!!
@user-vz9wh8dr7g
@user-vz9wh8dr7g Жыл бұрын
Спасибо за видео, хотелось бы увидеть эту тему с использованием ts типизацией.
@eurorock5912
@eurorock5912 Жыл бұрын
Михаил - спасибо! Нужная штука!) Будем посмотреть, так сказать!)
@MrQuest888
@MrQuest888 Жыл бұрын
Спасибо, очень доходчиво объясняете, лайк, подписка.
@alexalex4601
@alexalex4601 Жыл бұрын
планируются ли еще видео на тему Apollo react? Например, пагинация, подписки. Тема запросов и мутаций раскрыта просто замечательно. Особенно порадовала правильная работа с кэшем. Не видел, чтобы кто-то так подробно показывал именно использование кэша в GraphQL. Так же и пагинацию, как мне кажется, нужно делать через кэш. Но подобных видео на ютубе я не встречал.
@mishanep
@mishanep Жыл бұрын
Рад что видео понравилось. Долго его готовил. Пока продолжение не планирую. Но за тематику спасибо.
@Infrantos
@Infrantos Жыл бұрын
очень полезно и доступно, спасибо!
@user-wz9qg9jw2v
@user-wz9qg9jw2v Жыл бұрын
Как всегда лучший!
@user-nk6ih7uh1h
@user-nk6ih7uh1h Жыл бұрын
Видео просто на высоте!
@unknown.6914
@unknown.6914 2 ай бұрын
Полезный урок Михаил, спасибо.
@JS_Skyline
@JS_Skyline 2 ай бұрын
Spasibo, kak vsegda polezno i po delu!!!
@user-kn3ut1sh2o
@user-kn3ut1sh2o Жыл бұрын
Спасибо Михаил за полезный контент! (Apollo GraphQL)
@d_r_robot
@d_r_robot Жыл бұрын
О, класс!!! Как раз по моему запросу)
@aleksandrmatyka3118
@aleksandrmatyka3118 Жыл бұрын
Чтобы добить серию осталось только показать в связке с ts + codegen, ну и тесты)
@user-bx7vw8yr3g
@user-bx7vw8yr3g Жыл бұрын
Спасибо!
@voodooshtv7883
@voodooshtv7883 3 ай бұрын
Если у вас readQuery возвращает null то прокиньте туда variables, которые вы прокидывали при изначальном запросе, например так: 1) Получение всех публикаций пользователя const { loading, error, data: dataV, } = useQuery(GET_PUBLICATIONS, { variables: { userId }, }); 2) Создание публикации const [addPublication, { data: dataT, loading: loadingT, error: errorT }] = useMutation(ADD_PUBLICATION, { update(cache: any, { data: { createPost } }: any) { const tes = cache.readQuery({ query: GET_PUBLICATIONS, variables: { userId }, }); console.log(tes); }, });
@thehuman9604
@thehuman9604 Жыл бұрын
Отлично, спасибо. Я за 2 часа разобрался с этими технологиями и уже применяю в проекте :) Хотелось бы еще уточнить, я вижу сходство некое с Редаксом. МОгу ли я частично или полностью заменить этими технологиями - Редакс?
@dmitri683
@dmitri683 Жыл бұрын
Михаил спасибо за видео! Есть один вопрос, могу ли я использовать результат мутации в вышестоящем компоненте, как например в RTK Query с помощью флага fixed_cache_key для мутаций? Например, у меня есть компонент в котором по очереди показываются две формы, мои действия: - Успешно прохожу первую форму с помощью мутации - Хочу отследить результат мутации в родительском компоненте, чтобы отрендерить следующую форму - поле data от мутации не изменяется в родительском компоненте и форма не переключается
@Infinity-zf8ms
@Infinity-zf8ms 7 ай бұрын
Спасибо 🙏
@darkside2436
@darkside2436 Жыл бұрын
Nice content ☺️👍
@user-kg9hu7oo3w
@user-kg9hu7oo3w Жыл бұрын
Респект!
@weynemeynen
@weynemeynen Жыл бұрын
Супер! Хотелось бы нырнуть глубже в apollo: subscriptions, testing...
@Ana-xi9xy
@Ana-xi9xy Жыл бұрын
Жаль, два лайка поставить нельзя. Спасибо за видео!
@pavelmelnik9952
@pavelmelnik9952 Жыл бұрын
посмотрел вводный и Апполо, и захотелось проект переписать :)
@user-nl5jh8vi7g
@user-nl5jh8vi7g Жыл бұрын
Спасибо, как всегда интересно и полезно. Обратил внимание, что при загрузке(ожидании) показываете компонент-спиннер, а вы не реализовывали скелетон (самостоятельно или при помощи библиотеки)? Очень много где сейчас на сайтах используют. С удовольствием бы посмотрел реализацию скелетона в вашем проекте.
@mishanep
@mishanep Жыл бұрын
Во многих библиотеках компонентов сейчас предлагаются скелетоны. И в Material UI были и в Chakra и в Ant.Design.
@alexandersvirzhevsky6280
@alexandersvirzhevsky6280 7 ай бұрын
лайк, подписка!
@SerhiiNesterov
@SerhiiNesterov Жыл бұрын
Спасибо
@maxovsanyuk1033
@maxovsanyuk1033 10 ай бұрын
🔥🔥🔥
@sdsd-ec8rw
@sdsd-ec8rw Жыл бұрын
а есть еще подписки. Было бы здорово, если бы на данном канале их разобрали. У автора хорошо получается
@olegmaz3969
@olegmaz3969 Жыл бұрын
Очень полезная информация. Если работать с Next.js и нужно делать запрос со стороны backend и со стороны frontend. Использовал обычный fetch, так как Next.js поддерживает fetch на стороне backend. А как тогда использовать Apollo так, чтобы на стороне backend и frontend делать запрос?
@evgeniyacherevko6633
@evgeniyacherevko6633 Жыл бұрын
Я у вас проходила курс по ридаксу. Заюзала его до дыр и во всех технических заданиях uзала или redux или toolkit. Если бы вы еще сделали такой же классный курс с apollo клиент и сервер с разными примерами, то это было бы мега. Многие компании постепенно переходят с rest на graphql и не хватает достаточно контента
@mishanep
@mishanep Жыл бұрын
Я сейчас работаю с Relay вместо Apollo. Пока над курсом не задумывался, но вижу что контента по нему совсем нет. Хотя инструмент крутой, да и поддерживается той же Meta, что и сам React разрабатывает.
@evgeniyacherevko6633
@evgeniyacherevko6633 Жыл бұрын
@@mishanep контент немного есть на англ, но для того, чтобы хорошо усвоить технологию всегда нужно попробовать разные апп. Мне дико понравился ваш старый и новый ридакс. Очень помогло все понять фундаментально.
@olegmaz3969
@olegmaz3969 Жыл бұрын
But we see the fact that when updating the cache, we added a newTodo to the beginning of the array, but it still appears at the end of the cache. This can be seen if you update it again or in Apolo Client Devtools.
@lanneqdev193
@lanneqdev193 Жыл бұрын
🥳
@abubakrjuraev1816
@abubakrjuraev1816 7 ай бұрын
Привет. Хотелось увидеть работу с fragments спасибо
@sotickwalker6776
@sotickwalker6776 Жыл бұрын
Хорошее видео. Но есть один нюанс.. Можете попробовать именно с изначальной ДБ поработать (где посты). При добавление поста - пост почему-то идет все равно в конец массива кеша + идет повторный запрос на сервер всех постов.... Был бы очень любезен если бы смогли ответить на данный вопрос почему так происходит
@sotickwalker6776
@sotickwalker6776 Жыл бұрын
Я разобрался - может быть кому поможет: При добавление полей - соблюдайте структуру данных которые вы получаете. То есть поле которое вы добавляете вы явно должны указать в мутации
@localhost666
@localhost666 Жыл бұрын
Откуда на сервере взялся Graphiql, и каким образом сгенерировалась schema для туду? В начале же только был установлен пакет json-graphql-server и создан json файлик с данными. Т.е. этот пакет содержит в себе Graphiql? А схема сгенерена просто дефолтная? Ничего не понятно))
@mishanep
@mishanep Жыл бұрын
Видео про фронтенд часть, поэтому настройки бэкенда второстепенны. Да, Graphiql идет из коробки json-graphql-server
@user-fc4iv9xv1j
@user-fc4iv9xv1j Жыл бұрын
Добрый день. Михаил, а как насчёт SuperGraph? Есть опыт, которым можете поделиться? Очень ценная была бы информация!
@mishanep
@mishanep Жыл бұрын
Приветствую, Евгений. Никогда про него не слышал =)
@user-fc4iv9xv1j
@user-fc4iv9xv1j Жыл бұрын
@@mishanep www.apollographql.com/blog/announcement/backend/the-supergraph-a-new-way-to-think-about-graphql/
@deriirostyslav2335
@deriirostyslav2335 Жыл бұрын
мне очень было полезно. Михаил, добрый день, расскажите пожалуйста подробно как работать с Аполло-Персист-Кеш! persistCache({ cache, storage: new LocalStorageWrapper(window.localStorage), }); Как добавлять и удалять элементы в локал стор, а потом через @client в кеш и вызывать это у локального qgl запроса пример. Но самое интересное! Аполло-Сторедж. storage: new LocalStorageWrapper(window.localStorage), что это такое? как с ним работать? как добавить, или достать, записать или вытянуть переменные из персист кеша? Заранее благодарю! Спасибо, Ростислав
@jaki4695
@jaki4695 28 күн бұрын
🐯
@dmitriyyelovets3485
@dmitriyyelovets3485 Жыл бұрын
После удаления элементов, изменения в кэше в аполло дев тулз появляются только после обновления страницы. В чём причина?
@mishanep
@mishanep Жыл бұрын
Формально мы не удалили элемент из кэша, а убрали ссылку на него из коллекции. При перезагрузке в данном варианте кэш полностью очищается.
@iGotton
@iGotton Жыл бұрын
+
@baileysli6235
@baileysli6235 Жыл бұрын
Почему вы делаете кэллбек инпута на Enter? Просто подпишитесь на submit формы, а submit по Enter браузер делает самостоятельно. Походу HTML самый сложный язык для JS разработчиков :)
@Romul3003
@Romul3003 Күн бұрын
180 пример с тудушками... поднадоело. Как не зайдешь на какой-то видос посмотреть к Михаилу, обязательно тудушки. Михаил, будь немного уже пооригенальней, чтоли
GraphQL для фронтенд разработчиков
35:52
Михаил Непомнящий
Рет қаралды 44 М.
Redux не нужен. GraphQL и Apollo Client.
27:48
knowcity
Рет қаралды 51 М.
She ruined my dominos! 😭 Cool train tool helps me #gadget
00:40
Go Gizmo!
Рет қаралды 61 МЛН
MEGA BOXES ARE BACK!!!
08:53
Brawl Stars
Рет қаралды 34 МЛН
Авторизация в React-приложении с Firebase и Redux-Toolkit
47:24
Михаил Непомнящий
Рет қаралды 83 М.
Understanding Caching in Apollo Client 3
24:28
Apollo GraphQL
Рет қаралды 15 М.
Тестирование React приложения
1:03:02
Михаил Непомнящий
Рет қаралды 61 М.
React With GraphQL (Apollo Client) Crash Course
1:06:28
Laith Academy
Рет қаралды 86 М.
Learn GraphQL In 40 Minutes
39:43
Web Dev Simplified
Рет қаралды 731 М.
React Login with Apollo Server, Context, JWT (Apollo Server Tutorial)
1:07:20
Lid hologram 3d
0:32
LEDG
Рет қаралды 10 МЛН
Cadiz smart lock official account unlocks the aesthetics of returning home
0:30
Hisense Official Flagship Store Hisense is the champion What is going on?
0:11
Special Effects Funny 44
Рет қаралды 2,4 МЛН