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

แชร์
ฝัง
  • เผยแพร่เมื่อ 5 ก.ค. 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

ความคิดเห็น • 216

  • @user-ky4vq5jm5u
    @user-ky4vq5jm5u 2 ปีที่แล้ว +72

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

    • @mishanep
      @mishanep  2 ปีที่แล้ว +17

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

  • @max_mrtnv
    @max_mrtnv 2 ปีที่แล้ว +96

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

  • @neodinok-it3ym
    @neodinok-it3ym 4 หลายเดือนก่อน +6

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

  • @serg9888
    @serg9888 2 ปีที่แล้ว +6

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

  • @n3trnnr
    @n3trnnr 20 วันที่ผ่านมา

    Михаил, спасибо вам за обучающие ролики! Всегда доступно и понятно!

  • @konglomora3230
    @konglomora3230 2 ปีที่แล้ว +5

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

  • @user-xk2yp5nq6x
    @user-xk2yp5nq6x 3 หลายเดือนก่อน +1

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

  • @romankrytski8687
    @romankrytski8687 ปีที่แล้ว +8

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

  • @user-qc1cn4dl8q
    @user-qc1cn4dl8q 2 ปีที่แล้ว +1

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

  • @user-jz7pn6cd2q
    @user-jz7pn6cd2q 2 ปีที่แล้ว +1

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

  • @xkochevnikx.
    @xkochevnikx. 9 หลายเดือนก่อน

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

  • @mikhail-khoroshev
    @mikhail-khoroshev ปีที่แล้ว +1

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

  • @kostyakirieri7141
    @kostyakirieri7141 2 ปีที่แล้ว +42

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

    • @awenn2015
      @awenn2015 2 ปีที่แล้ว +5

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

    • @SlouMan
      @SlouMan 2 ปีที่แล้ว +2

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

  • @mestacey8120
    @mestacey8120 9 หลายเดือนก่อน +2

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

  • @yodgor585
    @yodgor585 ปีที่แล้ว +2

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

  • @JIKAIII
    @JIKAIII ปีที่แล้ว

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

  • @romanchenko8048
    @romanchenko8048 2 ปีที่แล้ว +2

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

  • @unlimitedgames8357
    @unlimitedgames8357 10 หลายเดือนก่อน

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

  • @serjdenisov2114
    @serjdenisov2114 ปีที่แล้ว +1

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

  • @frontendonly
    @frontendonly 2 ปีที่แล้ว +13

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

  • @larss2772
    @larss2772 2 หลายเดือนก่อน

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

  • @anatoliyrotskin5088
    @anatoliyrotskin5088 ปีที่แล้ว

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

  • @ufuf731
    @ufuf731 2 ปีที่แล้ว

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

  • @sour5786
    @sour5786 ปีที่แล้ว +2

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

  • @blgarOk
    @blgarOk ปีที่แล้ว +2

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

  • @igormalykhin5528
    @igormalykhin5528 29 วันที่ผ่านมา

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

  • @user-vp3je6jj8p
    @user-vp3je6jj8p 7 หลายเดือนก่อน

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

  • @user-eq3ph4qc9g
    @user-eq3ph4qc9g 8 หลายเดือนก่อน

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

  • @I248
    @I248 ปีที่แล้ว

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

  • @ylcsl4378
    @ylcsl4378 2 ปีที่แล้ว +1

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

  • @user-yj4wt8nr6v
    @user-yj4wt8nr6v ปีที่แล้ว +1

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

  • @user-ml4gu3sl5l
    @user-ml4gu3sl5l 2 หลายเดือนก่อน

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

  • @leshiq4214
    @leshiq4214 2 ปีที่แล้ว

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

  • @kenanhaciyev3759
    @kenanhaciyev3759 10 หลายเดือนก่อน +3

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

    • @user-ms7bq1rn6u
      @user-ms7bq1rn6u 3 หลายเดือนก่อน +1

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

  • @HaveFun77777
    @HaveFun77777 2 ปีที่แล้ว

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

  • @fira1308
    @fira1308 ปีที่แล้ว

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

  • @aliicomua1369
    @aliicomua1369 10 หลายเดือนก่อน

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

  • @krlkonstantine
    @krlkonstantine 10 หลายเดือนก่อน

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

  • @mukanidrissov5487
    @mukanidrissov5487 5 หลายเดือนก่อน

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

  • @konstantinzhirnov3013
    @konstantinzhirnov3013 2 ปีที่แล้ว

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

  • @gritsienkooleg3447
    @gritsienkooleg3447 ปีที่แล้ว

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

  • @nursultanyerzhan4432
    @nursultanyerzhan4432 ปีที่แล้ว +1

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

  • @user-yn5sq1fd5e
    @user-yn5sq1fd5e ปีที่แล้ว +1

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

  • @bentonfraizer69
    @bentonfraizer69 4 หลายเดือนก่อน

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

  • @Goddamn_Right
    @Goddamn_Right 8 หลายเดือนก่อน +4

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

  • @andretku
    @andretku 10 วันที่ผ่านมา

    Круто! сложное - простыми словами!

  • @user-eh6yu6wh9f
    @user-eh6yu6wh9f 11 หลายเดือนก่อน

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

  • @andreykachur3827
    @andreykachur3827 7 หลายเดือนก่อน

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

  • @user-mp6zm2nk6m
    @user-mp6zm2nk6m ปีที่แล้ว

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

  • @denistrapeschonok471
    @denistrapeschonok471 2 ปีที่แล้ว

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

  • @user-jo6ug2hj1e
    @user-jo6ug2hj1e ปีที่แล้ว

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

  • @maxkurylo
    @maxkurylo ปีที่แล้ว +3

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

    • @REDH3ADd
      @REDH3ADd ปีที่แล้ว

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

    • @CyberDanilka
      @CyberDanilka ปีที่แล้ว

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

  • @aominka3767
    @aominka3767 2 ปีที่แล้ว +4

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

  • @artedza
    @artedza 2 ปีที่แล้ว

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

  • @SabilasSalam
    @SabilasSalam 5 หลายเดือนก่อน +1

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

  • @kkambucha
    @kkambucha 2 ปีที่แล้ว

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

  • @beznamea9549
    @beznamea9549 2 ปีที่แล้ว

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

  • @user-bj3gc6xs9p
    @user-bj3gc6xs9p ปีที่แล้ว

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

  • @oleksiihmyrko7969
    @oleksiihmyrko7969 2 ปีที่แล้ว +2

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

  • @el_marca4987
    @el_marca4987 2 หลายเดือนก่อน

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

  • @hpcforum
    @hpcforum ปีที่แล้ว

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

  • @user-dp1ke7bx7c
    @user-dp1ke7bx7c ปีที่แล้ว

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

  • @maximbagrayntsev5154
    @maximbagrayntsev5154 ปีที่แล้ว

    Круто!!!

  • @dr.livesey5157
    @dr.livesey5157 ปีที่แล้ว +1

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

  • @user-pp7cp6ix1z
    @user-pp7cp6ix1z 2 ปีที่แล้ว

    Спасибо 👍🏿

  • @Quentinrei
    @Quentinrei 25 วันที่ผ่านมา

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

  • @deadme8039
    @deadme8039 2 ปีที่แล้ว

    nice one,keep doing that!

  • @azamatzhamakeev670
    @azamatzhamakeev670 2 ปีที่แล้ว

    Man you are the best!

  • @Sweet-Bubaleh
    @Sweet-Bubaleh 7 หลายเดือนก่อน

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

  • @ilaymorozoff4113
    @ilaymorozoff4113 2 ปีที่แล้ว

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

  • @23LS023
    @23LS023 9 หลายเดือนก่อน

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

  • @saramaz4l
    @saramaz4l 2 ปีที่แล้ว

    Спасибо!

  • @user-gn7bh1rx6o
    @user-gn7bh1rx6o 10 หลายเดือนก่อน

    Спасибо!!!

  • @rustam_gasymov
    @rustam_gasymov 2 ปีที่แล้ว

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

    • @mishanep
      @mishanep  2 ปีที่แล้ว

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

  • @kidsShow1998
    @kidsShow1998 ปีที่แล้ว

    от души like

  • @ssurrokk
    @ssurrokk 2 ปีที่แล้ว

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

  • @vladislavbogdashev1803
    @vladislavbogdashev1803 2 หลายเดือนก่อน

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

  • @druf5962
    @druf5962 ปีที่แล้ว

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

  • @rustam6287
    @rustam6287 2 ปีที่แล้ว

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

  • @user-wr4br7sr9q
    @user-wr4br7sr9q ปีที่แล้ว

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

    • @kawaikaino5277
      @kawaikaino5277 ปีที่แล้ว

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

    • @user-wr4br7sr9q
      @user-wr4br7sr9q ปีที่แล้ว

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

  • @mivalb7979
    @mivalb7979 2 ปีที่แล้ว

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

  • @user-bl8jr7eb9d
    @user-bl8jr7eb9d 2 ปีที่แล้ว

    Ждём RTK Query TS)

  • @techno-tramp
    @techno-tramp ปีที่แล้ว +1

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

  • @ice_records
    @ice_records 7 หลายเดือนก่อน

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

  • @johnconnor9787
    @johnconnor9787 ปีที่แล้ว

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

  • @user-yk9nj6co9d
    @user-yk9nj6co9d 6 หลายเดือนก่อน

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

  • @kyryloovsiannik7207
    @kyryloovsiannik7207 2 ปีที่แล้ว

    пушка, спасибо!

  • @van_za
    @van_za 2 ปีที่แล้ว +2

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

  • @Amelin1207
    @Amelin1207 ปีที่แล้ว

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

  • @sergeym889
    @sergeym889 2 ปีที่แล้ว

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

  • @true227
    @true227 4 หลายเดือนก่อน

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

  • @platonyasev1913
    @platonyasev1913 2 ปีที่แล้ว

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

    • @mishanep
      @mishanep  2 ปีที่แล้ว

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

  • @SabilasSalam
    @SabilasSalam 4 หลายเดือนก่อน

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

  • @rustam6287
    @rustam6287 2 ปีที่แล้ว

    классный контент

  • @vana__f7570
    @vana__f7570 2 ปีที่แล้ว

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

  • @burialstance
    @burialstance 2 ปีที่แล้ว

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

  • @railbatyrshin377
    @railbatyrshin377 9 หลายเดือนก่อน

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

  • @weynemeynen
    @weynemeynen 2 ปีที่แล้ว

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

  • @fil1806
    @fil1806 6 หลายเดือนก่อน

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

    • @mishanep
      @mishanep  6 หลายเดือนก่อน

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

  • @pandalove6795
    @pandalove6795 ปีที่แล้ว +2

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