Асинхронная работа с Redux Toolkit и createAsyncThunk

  Рет қаралды 102,091

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

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

2 жыл бұрын

Работа с API в Redux Toolkit без использования дополнительных библиотек. Создание асинхронных событий, их жизненный цикл и использование в React-приложении.
Видео по основам Redux Toolkit
• Redux Toolkit для упра...
Стартовый проект:
github.com/michey85/redux-too...
Конечный вариант:
github.com/michey85/redux-too...
#redux
Мои курсы по вебу с купонами:
✅ mishanep.com/
📢 Поддержка канала:
/ mishanep
www.tinkoff.ru/rm/nepomnyasch...
paypal.me/mishanep

Пікірлер: 233
@mikhailmikhailovich1037
@mikhailmikhailovich1037 Жыл бұрын
У автора есть талант обучать других людей. Информация подается очень корректно и доступно. Большое спасибо!
@user-yx4zt2ev2g
@user-yx4zt2ev2g Жыл бұрын
Одно удовольствие, учится по вашим роликам, большое спасибо!)
@maga_frank
@maga_frank Жыл бұрын
Чувак спасибо тебе за такой качественный контент. Не затянуто и не коротко прям идеально. Не буду указать пальцем, но есть некоторые которые пробегают быстро что то рассказывают, не успеваешь за ними и ничего не понятно.. А тут все идеально)
@lightinthedark5708
@lightinthedark5708 2 жыл бұрын
Прекрасная речь и очень доходчивое объяснение. Спасибо, Михаил!
@den_ph
@den_ph 2 жыл бұрын
Благодарю вас,Михаил, за понятное и подробное объяснение! Очень нравится манера подачи материала.
@user-uo7tg9tk3j
@user-uo7tg9tk3j Жыл бұрын
Присоединяюсь! Грамотная речь, отсутствие паразитов и дефектов речи, глубокое понимание автором темы и спокойная подача! Большая благодарность!
@AlEgorova
@AlEgorova 11 ай бұрын
Супер супер, наконец-то у меня в голове встало все вместе ))) Спасибо огромное за такое доходчивое видео!!!
@anazkomult
@anazkomult 2 жыл бұрын
Отличный урок по Redux Toolkit и createAsyncThunk. Спасибо, Михаил!
@alextotun
@alextotun 2 жыл бұрын
Все четко, ясно, подробно. Разбито на понятные этапы, до этого смотрел первый ролик про тулкит. Спасибо! Всех благ!
@akovalevv
@akovalevv 2 жыл бұрын
Одни из лучших видео на ютубе. Спасибо большое. Очень нравится что по мимо отличной подачи, автор пишет все на современных технологиях. Очень много туториалов даже за 2021- 22 года до сих пор используют старый редакс, а не тулкит.
@user-ce5bm1lv1c
@user-ce5bm1lv1c 2 ай бұрын
Михаил огромная благодарность вам за это видео в частности и за весь обучающий контент который вы делаете!
@loner_feed1738
@loner_feed1738 2 жыл бұрын
Как раз из-за таких добрых людей как ты меня ещё не уволили)
@MrOmelnik
@MrOmelnik Жыл бұрын
Спасибо автору за отличный обучающий материал. Доступно, понятно, без "воды". Удачи Вам.
@olegnesterov9957
@olegnesterov9957 2 жыл бұрын
Огромное спасибо за подробное объяснение работы с разными типами запросов
@keymsr
@keymsr 2 жыл бұрын
Спасибище! Долго не мог разобраться, а тут всё просто и наглядно оказалось.
@user-jz7pn6cd2q
@user-jz7pn6cd2q 2 жыл бұрын
Спасибо , видео было очень полезное , светлая тема, оказалась очень приятная для восприятия, размер шрифта отличный!!!
@alexey9404
@alexey9404 Жыл бұрын
Спасибо за инициативу во второй части ролика и то что ты его продлил. Очень полезная инфа! Спасибо. Продолжай в том же духе 👍
@krissssssssssssssssss
@krissssssssssssssssss Жыл бұрын
Михаил, видео действительно получилось полезным! Посмотрела, так как на проекте используется redux toolkit, а я только redux использовала. Особенно отмечу дикцию, вас приятно слушать, четко и по делу рассказываете, видео просто находка
@nursultanyerzhan4432
@nursultanyerzhan4432 Жыл бұрын
Одним словом супер 😊. Простой, понятный, подробный.
@Romul3003
@Romul3003 Жыл бұрын
Спасибо. Разбирал все сам по документации, а с твоей помощью закрепил и все улеглось в голове)
@bobby_jones
@bobby_jones 2 жыл бұрын
Очень благодарен за это видео. Помогло сильно. Не мог сам разобраться в Redux thunk в Redux Toolkit
@mikhaildevichensky6407
@mikhaildevichensky6407 2 жыл бұрын
Спасибо ! Приятный голос и четкость мыслей . Лайк и Подписка !
@vova9962
@vova9962 Жыл бұрын
Лайк, подписка, все уведомления !
@evgeniyn1542
@evgeniyn1542 2 жыл бұрын
Спасибо Михаил! Надо будет в выходные посмотреть :)
@voidcode2534
@voidcode2534 Жыл бұрын
Большое спасибо! Люблю ваши видео, приятная и понятная подача
@soln_sce3088
@soln_sce3088 6 ай бұрын
Спасибо огромное! Самый лучший туториал по этой теме из всех, что я видела.
@user-bt1rh9rt8j
@user-bt1rh9rt8j 2 жыл бұрын
Спасибо!!! Очень ждал это видео после предыдущего про редакс
@user-ky4vq5jm5u
@user-ky4vq5jm5u 2 жыл бұрын
Видео огонь, тема очень хорошо раскрыта!
@Werma2006
@Werma2006 2 жыл бұрын
Спасибо, прочитал быстрый старт официальный для тулкит, ничего не запустилось и очень непонятно, а тут просто офигенно, спасибо
@dimalukashenko4865
@dimalukashenko4865 2 жыл бұрын
Очень крутое видео. Чётко, без воды. Продолжай в том же духе.
@user-ue7lj2to9q
@user-ue7lj2to9q 2 жыл бұрын
Большое спасибо! Redux стал не так страшен :-) Отличное видео.
@kenanhaciyev3759
@kenanhaciyev3759 10 ай бұрын
это лучший видеоуроки по redux-toolkit и createAsyncThunk
@vladprodan7010
@vladprodan7010 2 жыл бұрын
Крутое видео! Ты крут! Давай RTK Query
@juniorprogrammer3246
@juniorprogrammer3246 2 жыл бұрын
Да RTK Query нужен
@anazkomult
@anazkomult 2 жыл бұрын
Да, было бы чудесно. Михаил, очень просим!)
@mikhail_shokun
@mikhail_shokun 2 жыл бұрын
Хотим RTK Query
@Markuvines
@Markuvines 2 жыл бұрын
Спасибо за хорошую подачу информации.
@sqpine
@sqpine 2 жыл бұрын
Спасибо. Очень полезные видео, приятный голос и подача.Подписался😁
@Vlad-jp3co
@Vlad-jp3co Жыл бұрын
Спасибо за ваши старания, Михаил)
@nivaech
@nivaech 2 жыл бұрын
Охренительно полезное видео. Спасибо, очень помогло.
@MrMikelend
@MrMikelend 2 жыл бұрын
Очень круто! Огромное спасибо!
@OleksandrDanylchenko2k
@OleksandrDanylchenko2k 2 жыл бұрын
Отлично, как раз на этой неделе понадобилось)
@user-pt7un8yu9b
@user-pt7un8yu9b 2 жыл бұрын
Михаил, видео супер!!! Прекрасное объяснение
@artemlesnov4869
@artemlesnov4869 2 жыл бұрын
Шикарный материал!!! Спасибо большое. хотел еще спросить о выносе логики из редюсеров в екстраредьюсеры и соединение нескольких слайсов для совместной реализации какой-то логики! было бы интересно посмотреть
@user-fd8bl4nq4q
@user-fd8bl4nq4q Жыл бұрын
Михаил, сильно благодарю. Классный видос, классная подача, классный урок!!!
@ylcsl4378
@ylcsl4378 Жыл бұрын
Вот бы я раньше нашёл это видео, спасибо за труд!
@toscaantosca4541
@toscaantosca4541 Жыл бұрын
Спасибо! Полезный урок!
@denisu9286
@denisu9286 8 ай бұрын
Спасибо за легкий и понятный рассказ
@EgorkaTubeOne
@EgorkaTubeOne Жыл бұрын
Очень приятный голос и приятная подача материала!
@user-du9bm5mv1o
@user-du9bm5mv1o 2 жыл бұрын
Спасибо! Отлично помогло разобраться.
@avmru
@avmru 2 жыл бұрын
Спасибо за createAsyncThunk!
@true227
@true227 10 ай бұрын
Михаил, спасибо за видео. Прошло два года с момента выхода видео и теперь при записи через объектную нотацию в поле extraReducers, т.е в таком формате [fetchCards.pending]: (state, action) вылезает предупрждение в консоли о том, что The object notation for `createSlice.extraReducers` is deprecated . Корректная запись теперь через билдер extraReducers: (builder) => { builder.addCase(fetchCards.pending, (state) => { state.status = "loading"; }); Только вот в официальной доке указаны оба этих способа и про депришиайтед первого ни слова. Лучи поноса им
@xdayx53
@xdayx53 4 ай бұрын
да-да
@kostya9772
@kostya9772 2 жыл бұрын
Спасибо большое за видео!
@KenKeray
@KenKeray 2 жыл бұрын
Редко встречаю, когда видео лучше мануала. Спасибо!
@garikmelqonyan9130
@garikmelqonyan9130 Жыл бұрын
Many thanks to you, Michael. Was a great tutorial as the most of your content.
@user-yv4ou3jl8y
@user-yv4ou3jl8y Жыл бұрын
Как всегда большое спасибо!)
@j4st134
@j4st134 Жыл бұрын
спасибо, очень помогло! (сижу джуном 6 месяцев опыта на мидловской позиции, пытаюсь делать задачи в сроки)
@sergeyivanov3351
@sergeyivanov3351 Жыл бұрын
Лайк! Подписка! Очень круто объяснено.
@pitbrest
@pitbrest Жыл бұрын
Спасибо за урок.
@user-vm2db5cq1g
@user-vm2db5cq1g Жыл бұрын
Михаил спасибо, отличное видео!
@user-ct8tp6jc9m
@user-ct8tp6jc9m Жыл бұрын
Спасибо за туториал!
@mivalb7979
@mivalb7979 2 жыл бұрын
Круто, спасибо!
@asergeev707
@asergeev707 2 жыл бұрын
Отличное видео
@vl_rotche
@vl_rotche 2 жыл бұрын
Браво!!
@AndreyKarlin
@AndreyKarlin Жыл бұрын
САМОЕ ЛУЧШЕЕ НА ЮТУБЕ ПО РЕДАКС ТУЛКИТ! СПАСИБО ОГРОМНОЕ, С МЕНЯ ПОДПИСКА И ЛАЙКИ!
@user-lx5vv3uu8u
@user-lx5vv3uu8u 2 жыл бұрын
Михаил, салют! Благодарю!
@mishanep
@mishanep 2 жыл бұрын
Обращайтесь :)
@williammutua
@williammutua 2 жыл бұрын
Well explained 💯
@warcraft.mp4889
@warcraft.mp4889 Ай бұрын
Вы просто прелесть
@deriirostyslav2335
@deriirostyslav2335 Жыл бұрын
да реально всё получается. Спасибо
@outlaw4Iife
@outlaw4Iife 2 жыл бұрын
Спасибо, в качестве благодарности напишу ключевые слова чтоб твой видос быстрее искали. redux redux toolkit react-redux createAsyncThunk
@user-jf5ly9mg7h
@user-jf5ly9mg7h 2 жыл бұрын
спасибо, все понятно
@user-zs5iw1tw3w
@user-zs5iw1tw3w Жыл бұрын
всё круто, спасибо
@andrewsmal5173
@andrewsmal5173 2 жыл бұрын
Круто!!!
@user-gc1zz5cu4n
@user-gc1zz5cu4n 2 жыл бұрын
Спасибо!
@vdvchannel7765
@vdvchannel7765 Жыл бұрын
толково 👍
@stephencurry8078
@stephencurry8078 2 жыл бұрын
только что зашел в документацию, офигел от жизни, ничего не понял, все таки не дорос пока, и зашел в ютуб с минимальной надеждой что то найти, и вот оно, спасибо. Сейчас глянем что да как
@Litaka1
@Litaka1 6 ай бұрын
отличный урок!! Спасибо, на работе в проекте назрела необходимость в использовании редакса. Я слишком далеко зашла в пропсдрилинге и нужно было это исправлять пока не поздно. Помнила, что начинала разбираться в классическом редаксе и было все понятно, до момента типизации))) но делать-то надо, еще только 9 месяцев опыта и я одна единственная фронт-программист, все делаю сама) немного страшно было, но по первому вашему уроку, я разобралась+помог коммент про типизацию, все РАБОТАЕТ!!!!! Смотрю дальше
@minkostas7232
@minkostas7232 5 ай бұрын
как это вы так устроились без знаний ?))
@Litaka1
@Litaka1 5 ай бұрын
это не IT компания, основное направление деятельности производство, а мой маленький it отдел - стартап. В чем-то легче(в плане нет дедлайнов), так как стадия разработки только (нет клиентов)@@minkostas7232
@enjoynfun
@enjoynfun 2 жыл бұрын
Thank you very mach)))
@dev-to-prod
@dev-to-prod 2 жыл бұрын
Контент огонь! Лайк, подписка) More React content pls!)
@xdayx53
@xdayx53 4 ай бұрын
спасибо)
@user-ih6ie9ve6d
@user-ih6ie9ve6d 2 жыл бұрын
Redux Toolkit. Thanks!
@Rostyslav-hv9un
@Rostyslav-hv9un Жыл бұрын
Видео отличное, помогло мне понять принципы работы Toolkit. Но эта белая тема в VSCode)))))
@vladvoloshenko5701
@vladvoloshenko5701 Жыл бұрын
лучший)
@sasdasaasdasdasdadad5354
@sasdasaasdasdasdadad5354 2 жыл бұрын
спасибо
@prohanya
@prohanya Жыл бұрын
Большое спасибо за уроки по Редаксу. Очень подробно, с актуальной информацией. Подскажите, есть ли какие-нибудь видео по Entity Adapter?
@mishanep
@mishanep Жыл бұрын
Для ютуба не записывал. Я разбирал его в своём курсе по редаксу - классная штука.
@username739
@username739 Жыл бұрын
Дай тебе бог здоровья!)
@user-fw5vu1gr5v
@user-fw5vu1gr5v 2 жыл бұрын
Привет, старик!! ) Вкратце словами интернет классика... Нихрена не понятно, но оооочень интересно! ))
@mishanep
@mishanep 2 жыл бұрын
Какими судьбами, дружище? :)
@vadim700230
@vadim700230 2 жыл бұрын
А правильно ли сначала диспатчить асинхронный экшен, а потом уже синхронный? Ведь из-за этого создается задержка в обновлении UI. И конечно же спасибо за урок, подробно и доступно объяснили.
@user-ke6fj2tf2u
@user-ke6fj2tf2u 2 жыл бұрын
Спасибо большое за видео! все очень доступно и понятно, НО можно пожалуйста попросить Вас сделать примерно этот же пример только в классовом компоненте. Решил для себя разобраться, но если честно это стало большой проблемой. Я и другие зрители думаю скажут Вам спасибо за это. P.S. лайк поставил и подписался)
@user-ke6fj2tf2u
@user-ke6fj2tf2u 2 жыл бұрын
можно даже не видео отдельное я на codepen или куда еще залить.
@mishanep
@mishanep 2 жыл бұрын
Приветствую. Видео точно не будет :) В чем конкретно возникла сложность? Я классовые компоненты использую только для error контейнеров (потому что по-другому нельзя). В остальном всё на функциях, сам Реакт нам это рекомендует. В классах, понятно, не действуют хуки. А подключение к Редаксу происходит через пень колоду, то есть через метод connect из react-redux, который добавляет в пропсы значения из хранилища и конкретные экшны.
@user-ke6fj2tf2u
@user-ke6fj2tf2u 2 жыл бұрын
@@mishanep будем пробовать. Спасибо за ответ
@glorglorsky7987
@glorglorsky7987 2 жыл бұрын
супер! спасибо большое!) очень классно объясняешь! почему используете fetch вместо axios?
@mishanep
@mishanep 2 жыл бұрын
Чтобы не устанавливать дополнительную библиотеку. Впрочем, это не значит, что axios я вообще не использую)
@sergeyplotnikov5031
@sergeyplotnikov5031 2 жыл бұрын
Как можно это унифицировать? Не хочется для каждого запроса прописывать столько всего. Большое спасибо за очень доходчивое объяснение!
@mishanep
@mishanep 2 жыл бұрын
Как и в обычном redux-thunk, rtk позволяет прокидывать для санков extra-параметр. Вместе с ним можно передать свою абстракцию для работы с crud-операциями, и внутри санка уже работать с ней, передавая нужные значения.
@MarshallBanananana
@MarshallBanananana Жыл бұрын
Лекция информативная и доходчивая - Спасибо! Установить стартовый проект не удалось ни Ярном (отсутствует файл лицензии) ни NPM (401 - нет аутентификации).
@mishanep
@mishanep Жыл бұрын
Lock файл попробуйте удалить и запустить заново
@MarshallBanananana
@MarshallBanananana Жыл бұрын
@@mishanepСпасибо, удаление yarn.lock помогло. npm install; npm fix --force; npm run - live-server поднялся!
@user_8911
@user_8911 Жыл бұрын
Очень люблю Ваши видео. Просьба - уменьшить разрешение экрана. С телефона ничего не видно, что в документации написано.
@m.g.0416
@m.g.0416 2 жыл бұрын
Очень круто, спасибо! Но есть вопрос - а зачем в файле todoSlice.js в функции fetchTodos на 9 строке мы пишем блок с условием if (!response.ok) {..., ведь по сути сама конструкция try / catch предполагает, что если нам в response прилетает ошибка, то дальнейший код не должен исполняться и нас переносит в catch? Или я ошибаюсь в этом моменте?
@mishanep
@mishanep 2 жыл бұрын
Try catch ловит ошибки js. А отрицательный ответ с сервера не всегда ошибка
@maxzavadovych9142
@maxzavadovych9142 Жыл бұрын
Михаил а есть какая-то разница между тем чтобы передать просто значение completed в пропсы асинхронной функции и тем что используем функцию getState и так находим значение completed?
@alexandrsereda6644
@alexandrsereda6644 2 жыл бұрын
Михаил, спасибо отличную лекцию. Не могли бы подсказать как избавиться от ошибки TypeScript для вычисляемых ключей [fetchTodos.pending]: (Имя вычисляемого свойства должно иметь тип string, number, symbol или any.ts(2464) (property) pending: AsyncThunkPendingActionCreator)?
@goodgamershow6505
@goodgamershow6505 Жыл бұрын
Change to fetchTodos.pending.type
@maksymkyryliuk492
@maksymkyryliuk492 2 жыл бұрын
Михаил, знаю что скорей всего вы наверное не ответите на мой вопрос, видео уже давнее ведь. Но всё же попытаюсь задать его. А можно ли редакс-тулкит использовать совместно с интерсепторами аксиоса? 🤔
@kspshnik
@kspshnik 11 ай бұрын
Михаил, доброе утро! Спасибо за супервидео. Скажите, а по createEntityAdapter() Вы такого видео случайно не планируете?
@mishanep
@mishanep 11 ай бұрын
Приветствую. У меня он разобран на курсе по редаксу (юдеми, степик). На Ютуб пока не планировал. Штука удобная, да.
@awenn2015
@awenn2015 2 жыл бұрын
27:19 для таких вещей typescript и нужен что бы не гадать что там функции принимают ))
@Edgar-pu1lc
@Edgar-pu1lc 11 ай бұрын
Привет Михаил,cпасибо за видео, хотел кое что спросить, 25:40, а почему бы не удалить action removeDoto, и вместо этого из асинхронного action (deleteTodo), в случае удачного запроса, вернуть сам id, и потом уже в fullfiled удалить todo ? [removeTodo.fulfilled]: (state, action) => { state.todos = state.todos.filter(todo => todo.id !== action.payload) state.status = 'complited' },
@Edgar-pu1lc
@Edgar-pu1lc 11 ай бұрын
Поспешил задавать вопрос, на 41:00 услышал ответ на свой вопрос )
@denpol9956
@denpol9956 2 жыл бұрын
Прошу сделать видос про связку Next.js + Redux Toolkit + Redux-Saga. Было бы интересно.
@mishanep
@mishanep 2 жыл бұрын
На очереди RTK Query. Про наборы библиотек сложно делать видео. В моем представлении надо пререквизит сначала предложить.
@user-yu7gm4df3f
@user-yu7gm4df3f 2 жыл бұрын
спасибо ! ) сейчас почитывю их rtk query - интегрированная с redux`ом библиотека для запросов . ох они там и намутили , капец ! ) я то думал оно легко будет , ага конечно ) . что скажете насчёт данного интсрумента в сравнении с его аналогами (swr, react query, да и еще qraphql всякие ) ? а вообще там столько всяких эффектов : например загрузка при смене и возвращении фокуса мыши на вкладку , всякие таймеры которые будут обновлять запросы , запись всех запросов в кэш , мутации на сервер и потом автоматом перезапрос туда же для обновления у себя .. что там еще ? а еще есть пропуск запросов по условию .. еще предзагрузки есть , когда ты можешь по разному поведению как правило при ховере мышью начать загрузку фоном .. ну и всякое там еще . объем функций большой у этих библиотек , как бы целая экосистема для автоматизации запросов , если разобраться то считаю полезной штукой .. но это нужно дуплить это дело нужно .
@mishanep
@mishanep 2 жыл бұрын
О том и речь, что задачи у всех разные и инструменты подбираются под задачи. Набирать инструменты впрок - бессмысленно. Если пока нет понимания зачем все эти подобные излишества, значит пока просто не было задач соответствующих. И это нормальная история, специфика может сильно разниться и спустя годы можно так и не столкнуться ни с чем подобным. Потом нет смысла сравнивать инструменты из разной плоскости. Например, GraphQL - это отдельная технология взаимодействия клиент/сервер, является аналогом REST API. Я бы предложил по пути изучения одного инструмента и его использования. Если вдруг упретесь в его ограничения под ваши задачи, тогда посмотреть, что есть еще смежного.
@awenn2015
@awenn2015 2 жыл бұрын
12:28 необязательно что то помещать в массив зависимостей эффекта , можно просто пустой передать и все
@kosechok1
@kosechok1 Жыл бұрын
Михаил, спасибо за хороший урок Очень бы хотел посмотреть как можно реализовать поведение кнопки “отметить всё” что бы и на сервер шли все запросы и код был переиспользован. Сделал у себя но чтото мне не нравится мой вариант :( Буду признателен за совет
@mishanep
@mishanep Жыл бұрын
Приветствую! По-хорошему для реализации такой фичи нужно, чтобы сервер обрабатывал соответствующий запрос. Было бы странно делать десятки или сотни запросов на каждую тудушку для выполнения типового действия. Поэтому здесь должна быть согласованная работа фронта и бэка. Как вариант, бэкенд может вернуть либо обновленный массив всех тудушек и мы тогда просто перезаписываем стейт, либо статус успешного завершения и тогда мы уже делаем своё событие обновление стейта.
RTK Query или альтернативный Redux по работе с API
31:55
Михаил Непомнящий
Рет қаралды 95 М.
ОДИН ДЕНЬ ИЗ ДЕТСТВА❤️ #shorts
00:59
BATEK_OFFICIAL
Рет қаралды 7 МЛН
Универ. 10 лет спустя - ВСЕ СЕРИИ ПОДРЯД
9:04:59
Комедии 2023
Рет қаралды 2,7 МЛН
Why You Should Always Help Others ❤️
00:40
Alan Chikin Chow
Рет қаралды 137 МЛН
Redux - Complete Tutorial (with Redux Toolkit)
37:01
Cosden Solutions
Рет қаралды 162 М.
Async dispatch - Redux Toolkit (7 video)
1:30
JavaScript Competency Center
Рет қаралды 2,5 М.
Redux Toolkit. Лучший state manager 2022. Обзор. createSlice / createAsyncThunk
1:11:28
Давай Попробуем: JavaScript
Рет қаралды 43 М.
Главные неудачи иммиграции в США 🇺🇸 по грин-карте
42:25
Отправьте меня в Америку!
Рет қаралды 397 М.
Типизация для Redux Toolkit
22:24
Михаил Непомнящий
Рет қаралды 40 М.
Learn Redux Toolkit in under 1 hour
58:10
Hitesh Choudhary
Рет қаралды 122 М.
The Truth about Rust/WebAssembly Performance
29:47
Greg Johnston
Рет қаралды 173 М.
ОДИН ДЕНЬ ИЗ ДЕТСТВА❤️ #shorts
00:59
BATEK_OFFICIAL
Рет қаралды 7 МЛН