RTK Query или альтернативный Redux по работе с API

Поделиться
HTML-код
  • Опубликовано: 12 июн 2024
  • Новая фича от создателей Redux Toolkit - RTK Query позволяет удобно организовать работу с API, без необходимости дополнительно хранить данные на клиенте. Инструмент позволяет делать кэширование, автообновление и многое другое. В этом видео мы рассмотрим базовые кейсы использования RTK Query.
    00:00 Основная идея
    02:43 Настройка окружения
    04:59 Базовый пример получения данных
    14:34 Пример с кэшированием
    17:58 Мутации - добавление данных
    23:59 Автообновления после мутаций
    27:37 Мутации - удаление данных
    Стартовые файлы
    github.com/michey85/rtk-query...
    Код итогового приложения
    github.com/michey85/rtk-query...
    #redux
    Мои курсы по вебу с купонами:
    ✅ mishanep.com/
    📢 Поддержка канала:
    / mishanep
    www.tinkoff.ru/rm/nepomnyasch...
    paypal.me/mishanep

Комментарии • 214

  • @max_mrtnv
    @max_mrtnv 2 года назад +94

    Самое потрясающее и понятное объяснение RTK Query!
    Такое видео должно быть в официальной документации!

  • @user-ky4vq5jm5u
    @user-ky4vq5jm5u 2 года назад +68

    Этот коментарий создан в качестве уважения автору и для продвижения его канала.

    • @mishanep
      @mishanep  2 года назад +17

      Этот ответ создан, чтобы поблагодарить автора комментария =)

  • @neodinok-it3ym
    @neodinok-it3ym 3 месяца назад +5

    Самые адекватные уроки на ютубе. Без воды, все четко понятно человеческим языком

  • @igormalykhin5528
    @igormalykhin5528 7 дней назад

    Автору браво. Это самое понятное обьяснение ртк квери что я только видел в рунете.

  • @serg9888
    @serg9888 2 года назад +5

    Михаил, спасибо за видео. Для меня это уже ваше третье по счету про RTK. Кратко, но достаточно, чтобы зацепиться. А дальше уже намного легче с официальными гайдами разбираться. Отличная подача материала!

  • @romankrytski8687
    @romankrytski8687 Год назад +7

    Спасибо большое за урок! У тебя отлично получается объяснять не самые лёгкие вещи, не самым продвинутым юзерам)

  • @kostyakirieri7141
    @kostyakirieri7141 2 года назад +42

    Очень круто и актуально, то что нужно было!!! еще бы с TS и тогда полный кайф был бы)

    • @awenn2015
      @awenn2015 2 года назад +5

      Эм, какой смысл сейчас вообще без ts делать ? Сейчас все начинают на ts делать , видео какое то неполное получаеться

    • @SlouMan
      @SlouMan 2 года назад +2

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

  • @user-xk2yp5nq6x
    @user-xk2yp5nq6x 2 месяца назад

    Самое понятное и краткое объяснение. Обожаю автора, все нравится, от тембра голоса до логики объяснения, супер!

  • @konglomora3230
    @konglomora3230 2 года назад +5

    Респект за усилия с которыми Вы доносите материал!

  • @larss2772
    @larss2772 Месяц назад

    Огромная благодарность за урок, всё понятно и доступно.
    Считаю Вас одним из лучших авторов по программированию и web разработке в целом.
    Да прибудет с вами сила))

  • @user-qc1cn4dl8q
    @user-qc1cn4dl8q 2 года назад +1

    Максимально доступно, понятно и интересно. Спасибо, Михаил!!!

  • @xkochevnikx.
    @xkochevnikx. 9 месяцев назад

    Михаил большое спасибо за Ваши труды, как всегда вовремя) приобрел 4 Ваших курса на степике)

  • @user-ml4gu3sl5l
    @user-ml4gu3sl5l Месяц назад

    очень крутой инструмент и очень понятно рассказан. очень хотелось бы подробно изучить все возможности RTK Query.

  • @el_marca4987
    @el_marca4987 Месяц назад

    Больше всего нравится такой стиль изложения. Ulbi tv тоже годные видосы снимает, но очень быстро все показывает и частенько приходится нажимать на паузу, чтобы понять что вообще происходит, а в твоих видео, пока ты печатаешь уже можно смысл уловить.

  • @frontendonly
    @frontendonly 2 года назад +13

    i'm not understand your language but understand the whole video it's too simple and amazing.thanks for sharing

  • @mestacey8120
    @mestacey8120 8 месяцев назад +2

    Честное слово, это самое вменяемое объяснение данной темы! Огромнейшее спасибо!

  • @user-jz7pn6cd2q
    @user-jz7pn6cd2q 2 года назад +1

    Спасибо за урок, доступный, понятный материал за короткое время, хорошая работа 💪💪💪👍👍👍

  • @JIKAIII
    @JIKAIII 11 месяцев назад

    Достаточно детально и ёмко изложено, очень легко вникать. Большое спасибо!

  • @mikhail-khoroshev
    @mikhail-khoroshev Год назад +1

    Вау! Хорош! И структура информации и подача мне нравится! Однозначно подписка!

  • @unlimitedgames8357
    @unlimitedgames8357 10 месяцев назад

    Насколько же вы шикарно преподносите информацию❤

  • @yodgor585
    @yodgor585 Год назад +2

    Просто по божески объяснил! Моё величайшее почтение

  • @serjdenisov2114
    @serjdenisov2114 Год назад +1

    Спасибо, Михаил за понятное объяснение!!!
    Классная вещь!!!

  • @romanchenko8048
    @romanchenko8048 2 года назад +2

    объясняете просто супер! все четко и понятно, спасибо!

  • @ufuf731
    @ufuf731 2 года назад

    Прекраснейшее объяснения, низкий поклон! Подписка

  • @anatoliyrotskin5088
    @anatoliyrotskin5088 11 месяцев назад

    Мишаня, ты прекрасно подаешь информацию, продолжай дальше просвещать нас!

  • @user-eq3ph4qc9g
    @user-eq3ph4qc9g 7 месяцев назад

    Респект за уроки, одни из самых лучших на ютубе

  • @I248
    @I248 Год назад

    я присоединясь к множеству одобрильных отзывов, браво!

  • @user-vp3je6jj8p
    @user-vp3je6jj8p 6 месяцев назад

    спасибо, большое! объяснение на высшем уровне! желаю вам крепкого здоровье!

  • @blgarOk
    @blgarOk Год назад +2

    И правда, RTK Query - крутейший инструмент! Спасибо за разжеванное объяснение!

  • @user-yj4wt8nr6v
    @user-yj4wt8nr6v Год назад +1

    Очень круто объяснил, спасибо!

  • @ylcsl4378
    @ylcsl4378 Год назад +1

    Очень хорошо объясняешь, очень нужные вещи, спасибо

  • @sour5786
    @sour5786 Год назад +2

    Михаил спасибо большое за видео, я очень жду больше информации о rtk query (например как сделать перехватчики как в axios, про middleware) да и в принципе я думаю лучше сразу с typescript показывать примеры

  • @aliicomua1369
    @aliicomua1369 10 месяцев назад

    Спасибо. Очень подробно и главное все понятно.

  • @krlkonstantine
    @krlkonstantine 9 месяцев назад

    очень классный и понятный урок, большое спасибо!

  • @maxkurylo
    @maxkurylo Год назад +3

    кэширование, работающее из коробки, и запрос на получение всех данных при каждом удалении или добавлении выглядят очень стремно)
    Но, скорее всего, это все настраивается. Спасибо большое за видео!

    • @REDH3ADd
      @REDH3ADd Год назад

      "и запрос на получение всех данных при каждом удалении или добавлении", а как подругому?
      изменив данные на сервере их сразу же и нужно подгрузить, чтобы у пользователя произошли изменения

    • @CyberDanilka
      @CyberDanilka Год назад

      @@REDH3ADd согласен, когда суть библиотеки это перенос состояния на бэк такой коммент выглядит как минимум забавно)

  • @HaveFun77777
    @HaveFun77777 2 года назад

    Спасибо вам, как раз с РТК работаю, буду внедрять!

  • @leshiq4214
    @leshiq4214 2 года назад

    Отличные гайды! Спасибо!

  • @mukanidrissov5487
    @mukanidrissov5487 4 месяца назад

    Большое спасибо за отличное объяснение такой непростой вещи

  • @fira1308
    @fira1308 11 месяцев назад

    Очень доходчиво объяснено!!!Спасибо!!!

  • @kenanhaciyev3759
    @kenanhaciyev3759 10 месяцев назад +3

    если что то сейчас достаточно в get-запрос написать: providesTags: ['Products'] а в post-запрос: invalidatesTags: ['Products'] - спасибо за уроки - максимально понятно

    • @user-ms7bq1rn6u
      @user-ms7bq1rn6u 2 месяца назад +1

      Огромное спасибо🥰
      Теперь у меня заработало автообнобление

  • @user-yn5sq1fd5e
    @user-yn5sq1fd5e Год назад +1

    раньше признавал только ulbi) Теперь + к нему еще и Миша) лайк оставил, комен оставил, видео лот корки до корки посмотрел) спасибо большое!

  • @user-eh6yu6wh9f
    @user-eh6yu6wh9f 10 месяцев назад

    супер объяснение, благодарю!!!

  • @gritsienkooleg3447
    @gritsienkooleg3447 Год назад

    Блин, как же это круто! Спасибо огромное! ОХх... )

  • @bentonfraizer69
    @bentonfraizer69 4 месяца назад

    Михаил, спасибо за труд

  • @Goddamn_Right
    @Goddamn_Right 7 месяцев назад +4

    15:15 При использовании доп. параметров в endpoint'е лучше написать: "query: {limit = ""} => ({url: 'goods', params: {_limit: limit, и все остальные нужные параметры, если есть, тоже сюда, как ключ: значение}})". Это не только правильно с точки зрения RTK, но и делает код более читаемым 😉

  • @konstantinzhirnov3013
    @konstantinzhirnov3013 2 года назад

    Спасибо за Вашу работу.

  • @nursultanyerzhan4432
    @nursultanyerzhan4432 Год назад +1

    Как раз думал по этой проблеме, я фуллстэк разраб. Думал как связывать бд и редакс. Контент простой для понятия, автору большой респект ❤❤❤

  • @andreykachur3827
    @andreykachur3827 6 месяцев назад

    Хорошее объяснение! Понял! Спасибо!

  • @user-mp6zm2nk6m
    @user-mp6zm2nk6m Год назад

    Большое спасибо за видео!

  • @Quentinrei
    @Quentinrei 3 дня назад

    Этот комментарий создан в качестве уважения автору и для продвижения его канала.

  • @denistrapeschonok471
    @denistrapeschonok471 2 года назад

    Спасибо большое. Круто!

  • @user-jo6ug2hj1e
    @user-jo6ug2hj1e Год назад

    Супер! Спасибо😀

  • @SabilasSalam
    @SabilasSalam 4 месяца назад +1

    Крутой вы, лайкнул, спасибо вам, желаю успехов!

  • @artedza
    @artedza 2 года назад

    Спасибо за видео!

  • @beznamea9549
    @beznamea9549 2 года назад

    Крутой видос, спасибо!

  • @aominka3767
    @aominka3767 2 года назад +4

    спасибо большое)больше про редакс тулкит, очень полезные знания

  • @kkambucha
    @kkambucha 2 года назад

    Класс! Суперкруто!

  • @hpcforum
    @hpcforum Год назад

    Спасибо. Хорошее видео.

  • @druf5962
    @druf5962 Год назад

    на многих ютуб гайдах часто вместо с rtk query еще и axios фигачат. есть ли реальный смысл аксиос юзать или rtk query самодостаточен? спс за видос, один из лучших сенсеев на ютубе

  • @user-bj3gc6xs9p
    @user-bj3gc6xs9p Год назад

    Просто невероятно! Очень прошу вас на основе этого видно сделать бесконечную загрузку данных при скроле. На самом деле проблема не маленькая а решения на нее не так просто и найти адекватного именно с RTK query. Был бы очень благодарен.

  • @oleksiihmyrko7969
    @oleksiihmyrko7969 2 года назад +2

    Очень крутая штука!!! Только закончил пет проджект с этой фичей ! Спасибо актуальный контент!

  • @user-dp1ke7bx7c
    @user-dp1ke7bx7c Год назад

    Спасибо 👍🏻, после zustand начал понимать работу Redux, а дальше Redux toolkit там и до крольече норы можно дайте.

  • @user-pp7cp6ix1z
    @user-pp7cp6ix1z 2 года назад

    Спасибо 👍🏿

  • @azamatzhamakeev670
    @azamatzhamakeev670 2 года назад

    Man you are the best!

  • @maximbagrayntsev5154
    @maximbagrayntsev5154 Год назад

    Круто!!!

  • @deadme8039
    @deadme8039 2 года назад

    nice one,keep doing that!

  • @user-gn7bh1rx6o
    @user-gn7bh1rx6o 9 месяцев назад

    Спасибо!!!

  • @saramaz4l
    @saramaz4l 2 года назад

    Спасибо!

  • @Sweet-Bubaleh
    @Sweet-Bubaleh 6 месяцев назад

    Кааааайф! Спасибо!

  • @user-yk9nj6co9d
    @user-yk9nj6co9d 5 месяцев назад

    Гранд мерси. Что значит большое спасибо )

  • @23LS023
    @23LS023 8 месяцев назад

    Все это очень круто, единственное, пожалуйста, переключись на dark mode ))

  • @rustam6287
    @rustam6287 2 года назад

    крутоооооооооооооооооо))

  • @rustam_gasymov
    @rustam_gasymov 2 года назад

    Очень круто!! Спасибо за такую качественную работу!!!Можно попросить сделать видосик связки rtk querry и websocket?

    • @mishanep
      @mishanep  2 года назад

      Спасибо за обратную связь. По websocket пока не планирую. Просто потому, что серьёзно с ним не работал. Возможно на одном из проектов по работе он пригодится, тогда будет пища для видео. Сейчас квалификации не хватит.

  • @user-bl8jr7eb9d
    @user-bl8jr7eb9d 2 года назад

    Ждём RTK Query TS)

  • @kidsShow1998
    @kidsShow1998 Год назад

    от души like

  • @dr.livesey5157
    @dr.livesey5157 Год назад +1

    Самое лучшее объяснение из всех!

  • @platonyasev1913
    @platonyasev1913 2 года назад

    Михаил, спасибо большое, отличное видео! А вы используете RTK-query на проде? Сейчас решаем с командой, что выбрать для нового проекта, где уже используется rtk - этот инструмент или react-query. Может быть, есть опыт работы с обеими библиотеками, что посоветуете?

    • @mishanep
      @mishanep  2 года назад

      Приветствую!
      С react-query пока не работал. В продакшн rtk в моей текущей компании не используется, но у нас по специфике проекта не так много редакса.

  • @ice_records
    @ice_records 6 месяцев назад

    Спасибо автору за весь контент очень понятно и информативно.
    Такой вопрос RTK Quary это замена или альтернатива Thunk?
    просто по функционалу в RTK Quary больше возможностей и упрощений под капотом и его (как я понял) лучше использовать в компонентах, а Thunk более настраеваемая вещь которая работает в сугубо в слайсах.
    Как я понял если все упростить то в случаи:
    RTK Quary
    сначала грузиться компонент => идет запрос на сервер => выполняется логика компонента => меняется стейт в сторе redux .
    Thunk
    Сначала делаеться запрос на сервер => меняеться стейт в сторе => грузиться компонент => Выполняеться логика компонента
    Буду рад если скоректируете моё понимание об этих 2х расширениях, так как пока не могу понять что нужно и в какие моменты использовать и как их между собой связывать и нужно ли?
    Зарание спасибо.

  • @vladislavbogdashev1803
    @vladislavbogdashev1803 Месяц назад

    26:13 это всё, что нужно знать про RTK Query
    "Мы сделали для вас новый крутой инструмент, который позволяет писать меньше кода, но выучите миллион новых синтаксисов под каждый конкретный случай".
    Это всё конечно здорово звучит, но ровно до тех пор, пока у вас простой CRUD, а не большое сложное приложение, где вы можете в респонсе синхронизировать много данных.
    На мой сугубо личный взгляд, связка redux-toolkit + классическая redux-saga + axios - это лучшая сборка для вашего проекта.

  • @van_za
    @van_za 2 года назад +2

    Спасибо за видео!!!
    Как быть если нужно получить объект с сервера..., пользователь его редактирует и только потом делаем запрос на обновление, как в таком случае использовать RTK Query?

  • @ilaymorozoff4113
    @ilaymorozoff4113 2 года назад

    Михаил, спасибо!! Пушка, огонь, пожар!

  • @true227
    @true227 3 месяца назад

    Михаил, а какой метод получения данных через api предпочтительнее? CreateAsyncThunk или RTK Query?

  • @user-wr4br7sr9q
    @user-wr4br7sr9q Год назад

    Капец как удобно! Правда придётся многое переписывать))

    • @kawaikaino5277
      @kawaikaino5277 Год назад

      Все прячется под капот, иногда мне кажется что это является проблемой

    • @user-wr4br7sr9q
      @user-wr4br7sr9q Год назад

      @@kawaikaino5277 ты прав, но это очень удобно. Можно смотреть внутренности в документации, но и она меняется постоянно) так что один глаз в доку, а другой на код)

  • @vana__f7570
    @vana__f7570 2 года назад

    Большое спасибо за видео! Но почему много кода взято подкопирку их документации?

  • @sergeym889
    @sergeym889 2 года назад

    Благодарю за гайд!
    Но у меня кое что не получается. Подскажите что делать, если в API с которым я работаю, в data ещё есть items, и только в нем находится массив объектов, который я хочу вывести?

  • @ssurrokk
    @ssurrokk 2 года назад

    очень круто рассказываешь 👍

  • @johnconnor9787
    @johnconnor9787 Год назад

    18:38 - Говоря об айди, недавно узнал, что в RTK еще есть nanoid() который тоже можно импортировать для создания ID

  • @techno-tramp
    @techno-tramp Год назад

    Привет. Присоединяюсь к поблагодарившим, в целом все четко, по полочкам, в удобно перевариваемой последовательности. Но хотелось бы уточнить, на 29:00 речь про то, что если кто-то в соседней комнате что-то удалит, то мы получим свежие данные. На сколько я понимаю, автоматом мы уже их не получим. RTK Query в нашем экземпляре приложения ничего не знает об операциях в чужом приложении.

  • @pandalove6795
    @pandalove6795 Год назад +2

    Не уверен, что после удаления или добавления объекта прямо настолько круто делать еще запрос на получение всех продуктов. Если объектов много, то они постоянно будут запрашиваться. Или это не так работает?

  • @burialstance
    @burialstance Год назад

    В конце была фраза про один источник истины, и все хранится на сервере. Я беккндщик и сейчас штурмую ртк. Хорошая практика в стейте хранить данные по пользователю?(Юзернейм, мыло итд)
    Вот у меня сейчас два эндпоинта, получение токена, и после кверифулфилда сразу диспатчится квери на получение пользователя через инитиате. Два эндпоинта через экстра подключены к своим слайсам. Можно ли назвать это оверхедом сохраняя пользователя в отдельном слайсе? Или пусть он в кеше хранится, а по необходимости/тайм-ауту инвалидировать его?

  • @SabilasSalam
    @SabilasSalam 3 месяца назад

    Вопрос.. как данные доставать селектором? или достаточно просто извлекать хук в нужном компоненте и уже дальше работать?

  • @weynemeynen
    @weynemeynen 2 года назад

    Михаил, покажи, пожалуйста, как RTK query может работать с GraphQL?

  • @user-cw4op6hd8i
    @user-cw4op6hd8i 2 года назад +3

    Очень доступно!
    А можно эти получаемые данные диспачить в стейт, определенный в каком-либо слайсе, и по необходимости использовать? Или хуки RTK Query сами являются таким хранилищем, которое можно подключать и использовать в нужных местах приложения?

    • @tutnichegonet
      @tutnichegonet Год назад +1

      тоже интересно

    • @user-im5rd5wc9g
      @user-im5rd5wc9g 3 месяца назад

      привет, узнал? что то у меня не получается диспатчить

  • @fil1806
    @fil1806 6 месяцев назад

    Спасибо за видео. Будет ли что то по state в nextjs13+, и вообще имеет ли смысл это использовать в nextjs, или там есть другие методики?

    • @mishanep
      @mishanep  6 месяцев назад

      У меня было видео про клиентские компоненты nextjs 13+ и там я немного затрагивал тему использования стейт-менеджеров. По сути, в текущем варианте вы можете использовать редакс, как и прежде. Но только в клиентских компонентах.

  • @railbatyrshin377
    @railbatyrshin377 9 месяцев назад

    Спасибо автору за ценную информацию.
    Подскажи пожалуйста, как мне создать и использовать хук для получения каких то товаров по slug. Slug берется из параметров url, то есть динамический. Я получаю этот параметр из url и как его пропихнуть в хук query? Желательно через useEffect, в котором будет привязка к slug, и внутри useEffect вызов для получения списка?
    Благодарю заранее, если конечно увидишь коммент)

  • @mivalb7979
    @mivalb7979 2 года назад

    Спасибо, Михаил!

  • @user-bh2qf9qp4s
    @user-bh2qf9qp4s Год назад

    Спасибо за полезный контент , скажите пожалуйста планируется ли подробный обзор redux saga ?

    • @mishanep
      @mishanep  Год назад

      Не планирую. С saga работать не доводилось ни на одном проекте пока. Не уверен, что встречусь с ним))

    • @alexvoid8717
      @alexvoid8717 Год назад

      createListenerMiddleware - It's intended to be a lightweight alternative to more widely used Redux async middleware like sagas and observables. While similar to thunks in level of complexity and concept, it can be used to replicate some common saga usage patterns

  • @profuter
    @profuter 4 месяца назад

    Правильно ли я понял: мы когда получаем товары добавляем к ним тег Products, который содержит актуальную базу продуктов, а потом когда добавляем и удаляем говорим что этот тег стал инвалидным (invalidate - сделать неактуальным) и его надо актуализировать и потому идёт автоматический запрос?

  • @boogeymanqq
    @boogeymanqq 7 месяцев назад

    Михаил подскажите пожалуйста, когда после каждой мутации я перезаписываю кэш (используя invalidatesTags) и сразу идёт запрос на повторное получение данных (query), как сильно это будет нагружать сервер?

  • @Amelin1207
    @Amelin1207 Год назад

    господи ты бог)