5. React и Redux.Action creators. Redux thunk и асинхронные действия

  Рет қаралды 101,508

Ulbi TV

Ulbi TV

Күн бұрын

В этом ролике мы рассмотрим как работать с асинхронными действиями на примере redux thunk
Мой курс "Продвинутый Frontend. В production на React" - ulbitv.ru/fron...
↓↓↓ПЛЭЙЛИСТЫ ↓↓↓
Собеседования -
• Собеседования
Paint online fullstack приложение canvas + websockets -
• Playlist
MobX & React -
• Mobx & React Полный ку...
Наглядная теория -
• Наглядная теория
Полный курс по Redux -
• Redux
React drag and drop -
• Drag and drop на REACT JS
React компоненты -
• ReactJS компоненты
React + Redux + Webpack
• React Redux Webpack - ...
Анимации в React -
• Анимации в React. Reac...
Разработка fullstack MERN web приложения
Frontend - • Playlist
Backend - • Playlist
Fullstack - / playlistlist=pl6dxkon1...
Поддержать меня и мой канал вы можете по ссылкам ниже.
Qiwi кошелек - www.qiwi.com/n...
Яндекс деньги - yoomoney.ru/to...

Пікірлер: 197
@oleksus_muchachus
@oleksus_muchachus 3 жыл бұрын
Если будешь продолжать свою деятельность и дальше, станешь одним из лучших, или даже лучшим, на русскоязычном контенте! Так держать!
@UlbiTV
@UlbiTV 3 жыл бұрын
Какие слова теплые! Спасибо огромное, Алексей, очень рад слышать!
@ОлегНетт
@ОлегНетт 3 жыл бұрын
Полностью с тобой согласен
@UlbiTV
@UlbiTV 3 жыл бұрын
@@ОлегНетт спасибо!)
@strongwolf1024
@strongwolf1024 3 жыл бұрын
Инфа сотка))
@strongwolf1024
@strongwolf1024 3 жыл бұрын
Лучший)) мне твои уроки заходят лучше чем даже у Владилена Минина ! Не останавливай свои труды . Ты очень понятным языком доносишь информацию ! Тебя смотрят немного лишь за то-го что молодой канал. Я уверен скоро ты покоришь ютюб .
@ammoney159
@ammoney159 2 жыл бұрын
Не понял redux раньше. Начал смотреть твои видео, все стало понятно, все супер, кайфую! Спасибо тебе большое, однозначно лайк!
@aarovas
@aarovas 3 жыл бұрын
Мужик, спасибо тебе большое, не останавливайся!
@Leon-rv2zm
@Leon-rv2zm 2 жыл бұрын
пишу комментарий поддержки, смотрим дальше)
@ЭзамАппаева
@ЭзамАппаева 3 жыл бұрын
Урааа, новый видос🥰🥰🥰❤️❤️❤️
@UlbiTV
@UlbiTV 3 жыл бұрын
Круто же!)
@oleksandrvoron_ko580
@oleksandrvoron_ko580 3 жыл бұрын
Комент для відео в ТОП та подяка за красиве пояснення!
@Evgeny..
@Evgeny.. 2 жыл бұрын
вернулся поставить лайк, спасибо за видео!
@garikmelqonyan6011
@garikmelqonyan6011 2 жыл бұрын
Big like to you man. You are really good at explaining. Your tutorials are by no means worse than the tutorials of Vladilen Minin. You really deserve hundreds of thousands of likes and subscribers. Thank you.
@kotix_
@kotix_ Жыл бұрын
Did you want to say better, not worse? :)
@garikmelqonyan6011
@garikmelqonyan6011 Жыл бұрын
@@kotix_ Actually yes ))
@ipa_stor
@ipa_stor 3 жыл бұрын
Видео к выходным, лайк стоит, теперь посмотрим...:)) как раз вчера с этим работал:)))
@UlbiTV
@UlbiTV 3 жыл бұрын
Вовремя значит!) спасибо!)
@romanr5843
@romanr5843 Жыл бұрын
спасибо за уроки! P.S.: после просмотра этого ролика длиной 4 минуты решил повторить не подглядывая в видео. потратил больше 3 часов))))))))
@РустамАетбаев-р4к
@РустамАетбаев-р4к 2 ай бұрын
Роман, у тебя этой ошибки не было? Actions must be plain objects. Use custom middleware for async actions.
@arman_sard
@arman_sard 2 жыл бұрын
UIbi tv большое спасибо, реально круто как ты все делаешь и передаёшь. Талант !
@sergeyplotnikov5031
@sergeyplotnikov5031 3 жыл бұрын
Великолепно просто объяснение!!!!
@s9219871110
@s9219871110 2 жыл бұрын
Большое спасибо! Супер!
@mikki7677
@mikki7677 Жыл бұрын
Спасибо за твой контент! В подсказке на 0:30 ты оставил подсказку не по Middleware, а по Web sockets
@eduardlukashenko2191
@eduardlukashenko2191 Жыл бұрын
вот ссылка на его видео по Middleware: kzbin.info/www/bejne/l6mUp5iomdCJhtE&ab_channel=UlbiTV
@Alex-bx2ry
@Alex-bx2ry 3 жыл бұрын
Вопрос по асинхронности, мы же можем просто обработать клик, выполнить асинхронный код, а потом вызвать dispatch, не могу понять принципиальную пользу redux-thunk и то что мы сначала делаем dispatch, а потом выполняем асинхронный код, и потом снова dispatch
@pashastrayt8928
@pashastrayt8928 2 жыл бұрын
Согласен, тоже не вкурил этот момент
@super4prikolist1
@super4prikolist1 2 жыл бұрын
да, я это 3 года назад вроде понял, и делал. А щас, понимаю как это работает, как сделать, но ощутимой пользы все еще не улавливаю
@ПавелОсокин-ш3г
@ПавелОсокин-ш3г Жыл бұрын
Я не понял тоже зачем два раза делать диспач и как вообще он попадает в аргумент функции, если мы его не передаем в круглых скобках как аргумент
@roman-zubanov
@roman-zubanov Жыл бұрын
@@ПавелОсокин-ш3г Осмелюсь предположить, что если в диспатч передается не экшен (объект), а функция, то она попадает в миддлвар (thunk ), где вызывается с передачей диспатча (который доступен в этом thunk ). И уже этот диспатч вызывается после получения данных с обычным экшеном (простым объектом). Я вот не понял, зачем нам заворачивать этот асинхорнный экшен во внешнюю функцию. Можно же наверное написать функцию с параметром dispatch, и передать ее без вызова в dispatch который в кнопке. то есть: const fetchCustomers( dispatch ) => { fetch.. .then(json => dispatch( addManyCustomersAction( ) )) } а в кнопке dispatch( fetchCustomers ) }> // Передаем функцию без вызова, что равносильно вызову функции, которая возвращает другую функцию. Чем я это для себя могу объяснить - раз мы передаем экшены в диспатч как вызов функции, чтобы не запутаться, нужно везде делать вызов функции.
@darnelo7606
@darnelo7606 Жыл бұрын
Это для того, чтобы разгрузить UI от запросов. Юзер, например, нажимает на кнопку "получить данные" (меняет состояние). И вместо того, чтобы посылать запрос в самом UI, мы делаем это в Redux-thunk. Никто вам не запретит нагрузить UI всеми нужными действиями - запросами, изм. состояния итд., но мы же тут про рациональное программирование, поэтому и отводим логику изменения состояние с асинхронным запросом в Redux.
@kirylarkhipenka9568
@kirylarkhipenka9568 3 жыл бұрын
Не та всплывашка на 0:27.
@UlbiTV
@UlbiTV 3 жыл бұрын
Спасибо)
@srt2046
@srt2046 3 жыл бұрын
Ничего не понял, но лайк и комментарий для продвижения канала!
@UlbiTV
@UlbiTV 3 жыл бұрын
Жаль что непонятно, но спасибо!)
@srt2046
@srt2046 3 жыл бұрын
@@UlbiTV одна просьба ,сделай пожалуйста размер шрифта побольше. А то тяжко рассматривать ((
@srt2046
@srt2046 3 жыл бұрын
@@UlbiTV прошёлся по предыдущим видео, теперь более понятно. Хотя надо разобраться с этими type, action, payload🤦🏻‍♂️😁
@UlbiTV
@UlbiTV 3 жыл бұрын
@@srt2046 насчет шрифта, я уже сделал, тк многие просили, на пару пикселей увеличил, но на этом видео возможно еще старый шрифт!)
@Алексей-т2х8й
@Алексей-т2х8й 3 жыл бұрын
спасибо
@jsmonstr9638
@jsmonstr9638 3 жыл бұрын
топ, жду redux-saga
@UlbiTV
@UlbiTV 3 жыл бұрын
Скоро)
@atlasua2021
@atlasua2021 3 жыл бұрын
хуягу жди!
@iznu3
@iznu3 2 жыл бұрын
Спасибо! 🔥🔥🔥
@АлексейНикулин-е8н
@АлексейНикулин-е8н 4 ай бұрын
Классное видео
@АртемийКолотов-з4ь
@АртемийКолотов-з4ь 2 жыл бұрын
Вы мощно продвинулись как блоггер-круче звук, быстрее говорите)
@LeBron4eg
@LeBron4eg 3 жыл бұрын
сначала ставлю лайк, только потом смотрю
@UlbiTV
@UlbiTV 3 жыл бұрын
Правильно!))) Спасибо за поддержку друг!
@ВладимирГугин-ш7щ
@ВладимирГугин-ш7щ 3 жыл бұрын
Круто! Держи в курсе)
@maxet2374
@maxet2374 2 жыл бұрын
Быстро просто и понятно о сложном
@МаксимМельников-и7б
@МаксимМельников-и7б 2 жыл бұрын
Возможно уже писали, но ссылка на middleware неверная. Спасибо за контент
@ПопівчакБогдан
@ПопівчакБогдан 2 жыл бұрын
Большое спасибо за качественньій материал!
@dmitriykharchenko6320
@dmitriykharchenko6320 3 жыл бұрын
Огромное спасибо - я новичёк и не каждое видео заходит с первого раза, но если долго мучиться то обязательно получится=)😁
@learningit2572
@learningit2572 2 жыл бұрын
получилось?
@nurlanmehdiyev7428
@nurlanmehdiyev7428 2 жыл бұрын
очень помог, спасибо!
@user-pd9no5ye5g
@user-pd9no5ye5g 3 жыл бұрын
спасибо, отлично разложил
@UlbiTV
@UlbiTV 3 жыл бұрын
Спасибо!)
@ДаниярКаби
@ДаниярКаби 2 жыл бұрын
Супер, спасибо большое 👍👍👍
@TheProfessionalGambler
@TheProfessionalGambler 3 жыл бұрын
Ждём редакс сагу) Не понимаю популярности редакса, столько всего нужно подключить чтобы пользоваться нормально. Для асинхронщины одно, для нормализации данных другое и т.д. Мобикс установил и пользуешься, один казалось минус - большой размер. Но если в редакс добавить тулкит то он будет такой же по размеру)
@UlbiTV
@UlbiTV 3 жыл бұрын
У меня абсолютно такой же вопрос 😂
@TheProfessionalGambler
@TheProfessionalGambler 3 жыл бұрын
@@UlbiTV одно адекватное объяснение видел от Андрея Ситника. Смотрел его доклад по опен сорсу?
@UlbiTV
@UlbiTV 3 жыл бұрын
@@TheProfessionalGambler неа, если поделишься ссылочкой, гляну)
@TheProfessionalGambler
@TheProfessionalGambler 3 жыл бұрын
@@UlbiTV kzbin.info/www/bejne/iZPKooVtbtODmpI
@jorgenUA
@jorgenUA 3 жыл бұрын
большинство разработчиков очень консервативны. Видео крутое.
@plotitsyn
@plotitsyn 3 жыл бұрын
Каждый раз жду от вас видео по некоторым темам и Redux - одна из них. Спасибо, вполне понятно про Redux thunk и Redux.Action. Сколько планируете уроков в этом курсе? Я тут стою на распутье: углубляться в React.Context или продолжать Redux? Понимаю, что решение за мной, но вы, как человек безусловно компетентнее меня в React, что бы посоветовали?
@UlbiTV
@UlbiTV 3 жыл бұрын
Спасибо за отзыв!) Рад слышать! Изучать стоит все, хотябы азы, но я бы советовал redux, ибо в большинстве проектов будет он. Еще будет 3-4 урока в курсе по редакс, в следующем redux-saga, потом тайпскрипт + редакс, redux-observable
@jorgenUA
@jorgenUA 3 жыл бұрын
@@UlbiTV ждём)
@Galina...888
@Galina...888 6 ай бұрын
❤ лучший
@for-kids-games1
@for-kids-games1 Жыл бұрын
то кто понял то ты просто умница
@indigosay
@indigosay Жыл бұрын
Всё понял удачи в деле
@oleg5588
@oleg5588 Жыл бұрын
Спасибо! Отменно.
@mishamad
@mishamad 3 жыл бұрын
топ контент!!!
@UlbiTV
@UlbiTV 3 жыл бұрын
Благодарю!)
@АртурСавин-г6т
@АртурСавин-г6т 2 жыл бұрын
@Чурка-щ6и
@Чурка-щ6и 3 жыл бұрын
С каждым днём изучая реакт, убеждаюсь что эта библиотека создана чтобы только усложнять работу
@oleksandrtolstoi5468
@oleksandrtolstoi5468 2 жыл бұрын
Попробуй написать на ваниле большой проект и подумай еще раз о том что ты написал)
@griha296
@griha296 Жыл бұрын
Переосмыслил за год?
@Aidar_123
@Aidar_123 3 жыл бұрын
А нельзя передать диспатч в виде аргумента в fetchCustomers, он в свою очередь просто вызовет fetch, у которого then вызовет переданный в функцию диспатч, нежели вызывать диспатч дважды как ты показал.
@cyberdron
@cyberdron Жыл бұрын
вот тоже подумал об этом, не очень понятно зачем эта дополнительная обертка в функцию, есть мысль что это thunk требует таким образом оформлять, но не уверен
@Aidar_123
@Aidar_123 Жыл бұрын
@@cyberdron Думаю что это нужно для поддержания стилистики и явного объявления функции, хотя это довольно странно, я проверял он работает и так и без.
@rva3674
@rva3674 3 жыл бұрын
Ок, а почему нельзя просто передать диспатч в санк (по клику на копку)? В компоненте мы в диспатч передаем санк, а потом в санке мы уже диспатчим екшн... зачем 2 раза вызывать диспатч? Или я чет не понимаю?
@kinofan_org
@kinofan_org 3 жыл бұрын
Вот такой же вопрос, почему сразу нельзя сделать экшн асинхронным и в нем же обновлять redux стэйт?)
@weij33t_live
@weij33t_live 3 жыл бұрын
@@kinofan_org Ограничение редакса не позволяет это сделать. Насколько я помню, при вызове асинхронной функции(экшена) будет ошибка - попробуй ради интереса
@kinofan_org
@kinofan_org 3 жыл бұрын
@@weij33t_live я имел ввиду внутри thunk функции все прописать сразу
@therescue1879
@therescue1879 2 жыл бұрын
потому что через диспатч нам могут понадобиться параметры для thunk. И чтобы мы могли передать эти параметры, мы оборачиваем thunk в функцию-замыкание откуда сможем получить параметры. Надеюсь объяснил
@user-pd9no5ye5g
@user-pd9no5ye5g 3 жыл бұрын
почему-то после твоих роликов информация с других каналов просто перестала усваиваться, по 30-40 мин рассказывают, осадка 0, несколько часов пытался осознать, как thunk у себя прикрутить (хотя и так работает все норм, но по ТЗ middleware обязателен к использованию), а у тебя 4 мин и можно начинать прикручивать)
@MikhailAdutskevich
@MikhailAdutskevich 2 жыл бұрын
Качественно!
@azatnuriakhmetov3057
@azatnuriakhmetov3057 Жыл бұрын
Топ контент, как не поставить тут лайк?
@ЮрийОвчинников-ы9ц
@ЮрийОвчинников-ы9ц 2 жыл бұрын
А можно пожалуйста выкладывать код на GitHub, а то у меня не работает, но не могу понять почему.
@TheArestus
@TheArestus 3 жыл бұрын
Отлично! Вопрос, я правильно понимаю, что по сути всю логику, методы и пропы мы можем выносить в редакс, тем самым делая компоненты более чистыми или только передавать в них нужные значения со стейта с помощью useSelectors ? ну и в обратку useDispatch?
@dimalukashenko4865
@dimalukashenko4865 3 жыл бұрын
А есть ли ссылка на исходники?
@ЛаоТорманов
@ЛаоТорманов 2 жыл бұрын
Подскажите, пожалуйста! На 2:04 Тимур говорит: "Чтобы мы потом могли использовать эту функцию как action, мы из этой функции должны вернуть новую функцию" Я пытался понять зачем это нужно, попробовал просто в теле функции fetchCustomers сделать fetch-запрос, а параметром fetchPosts как раз указал dispatch. И это сработало точно так же. Зачем тогда return'ить функцию, если можно в сам fetchPosts передать dispatch?
@traintocode1698
@traintocode1698 Жыл бұрын
Я тоже этот момент не понял, в доках тоже говорят что нужно просто параметром функции принимать dispatch: const thunkFunction = (dispatch, getState) => { // logic here that can dispatch actions or read state }
@traintocode1698
@traintocode1698 Жыл бұрын
Хотя дальше в доках тоже указан этот подход где мы из функции возвращаем функцию
@void6237
@void6237 Жыл бұрын
Подскажите пожалуйста как именно сделать fetchCustomers без возвращения функции
@void6237
@void6237 Жыл бұрын
А что за функция fetchPosts?
@alexmeh1919
@alexmeh1919 2 жыл бұрын
лучший!
@sagiden1343
@sagiden1343 2 жыл бұрын
Просто класс
@efimkapliy6370
@efimkapliy6370 3 ай бұрын
🔥🔥🔥
@aleksandrglebik8033
@aleksandrglebik8033 2 жыл бұрын
Классные уроки!
@petermashine1483
@petermashine1483 2 жыл бұрын
redux сегодня много понятнее .
@testovtest3881
@testovtest3881 3 жыл бұрын
Подскажите, а почему если функция асинхронная мы не вызываем ее через async await
@weij33t_live
@weij33t_live 3 жыл бұрын
Это другой вариант вызова асинхронной функции. То, что вы написали - это более последовательный и читабельный код, в отличии от .then(), но по сути это одно и то же
@klavdiak8875
@klavdiak8875 2 жыл бұрын
спасибо большое!
@surensimonyan7106
@surensimonyan7106 2 жыл бұрын
Урок по react и redux не плохой, но можно немного по медленнее, а то не все поспевают и я тоже))
@VaultBoyVaultBoy
@VaultBoyVaultBoy Жыл бұрын
В плеере настройки -> скорость воспроизведения -> 0.5
@LuckyStilet1
@LuckyStilet1 2 жыл бұрын
2:22 как мы потом получаем параметр dispatch в функцию, которую возвращаем?
@UlbiTV
@UlbiTV 2 жыл бұрын
С помощью мидлвейр redux thunk
@LuckyStilet1
@LuckyStilet1 2 жыл бұрын
@@UlbiTV Большое спасибо, потом предположил. Я middle Vue, не помню по какой причине начал смотреть твой курс по React, не заметил, как за неделю прошел уже несколько больших уроков по теме, еще не знаю зачем мне это))) Просто очень крутой контент! Можешь посоветовать, на сколько есть смысл развивать несколько фреймворков? Или лучше сосредоточиться на одном, чтоб прокачаться до Senior и уже с глубоким пониманием паттернов проектирования изучать то, что будет нужно и актуально?
@dyg6945
@dyg6945 Жыл бұрын
Спасибо!!!!
@FireORcolD
@FireORcolD 3 жыл бұрын
интересные видосы, но когда я 2 раза нажимаю кнопку получить данные, то при удалении приложение ломается
@zatokeran
@zatokeran 2 жыл бұрын
👍
@ЯнаПронько-ы7ъ
@ЯнаПронько-ы7ъ Жыл бұрын
Спаибо!
@dev_insider
@dev_insider 3 жыл бұрын
крутой видос, но когда уже будет видео по пеинту?
@UlbiTV
@UlbiTV 3 жыл бұрын
В ближайшее время друг!) Стараюсь все параллельно делать!))
@drakonn90
@drakonn90 2 жыл бұрын
Есть вопрос - зачем вызывается dispatch 2 раза (в App и в fetchCustomers) как это работает?
@GamerHarbors
@GamerHarbors 2 жыл бұрын
тоже не понял как оно работает -_-
@kuzyafel
@kuzyafel 9 ай бұрын
Спасибо за твои уроки по реакту, я его полюбил и не знаю как на другом вообще писать можно, помуччался неделю и начал потихоньку писать сам. Вопрос таков, у меня при нажатии на получить клиентов в нулевой элемент прилетает массив, грубо говоря не мапает, не особо понимаю почему так происходит, сама надпись "нет клиентов" исчезает, а массив не мапается так кк первым элементом записывается массив с апи, не могу понять в чем причина что он не мапает а целым массивом вставляется. Спасибо!
@Алексей-т2х8й
@Алексей-т2х8й 3 жыл бұрын
+
@МарияЗахарова-ы8ц
@МарияЗахарова-ы8ц Жыл бұрын
При запросе ошибка Uncaught Error: Actions must be plain objects. Use custom middleware for async actions. ComposeWithDevTools() - не работает. С window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__ тоже ничего не получается. Получилось решить, убрав все. Если кто знает как оставить, маякните) Файл store/index.js : import { legacy_createStore as createStore, legacy_createStore, combineReducers, applyMiddleware } from "redux"; import thunk from 'redux-thunk' import { cashReducer } from "./cashReducer"; import { customerReducer } from "./customerReducer"; const rootReducer = combineReducers({ cash: cashReducer, customers: customerReducer }); export const store = createStore(rootReducer, applyMiddleware(thunk));
@КонстантинФедоров-и3м
@КонстантинФедоров-и3м Жыл бұрын
Вот так заработало, спасибо чатджипити import {applyMiddleware, combineReducers, compose, legacy_createStore as createStore} from "redux"; import {cashReducer} from "./cashReducer"; import {customerReducer} from "./customerReducer"; import thunk from "redux-thunk"; const rootReducer = combineReducers({ cash: cashReducer, customers: customerReducer, }) const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose; export const store = createStore(rootReducer, composeEnhancers(applyMiddleware(thunk)));
@dmitrys5369
@dmitrys5369 Жыл бұрын
0:28 подсказка всплывает не про MiddleWare, про Websockets
@КириллИор
@КириллИор 2 жыл бұрын
🤘🤘🤘🤘
@MrRiseful
@MrRiseful Жыл бұрын
Нет исходников, когда ты прожимешь у тебя происходит автоимпорт, но в vscode он не всегда есть и тем более надо настроить.
@АндрейАстанаев-п9х
@АндрейАстанаев-п9х Жыл бұрын
я туплю. в dispatch вызывыется action-creator fetchCustomers, внутри которого вызывается функция, которая вызывает dispatch. Почему функция не уходит в глубокую рекурсию? UPD: При рендере компонента, выполнится функция, которая вернет dispatch(fetchCustomers()), при каждом нажатии на кнопку будет диспатчиться action, который представлен в виде асинхронной функции. Я понял!!! В dispatch должен попасть объект вида {type: '...', payload: '...'}. Redux-thunk позволяет вызывать action creator, который возвращает функцию вместо объекта. Эта функция принимает в качестве аргументов dispatch, чтобы уже в теле этой функции вызвать dispatch синхронно(в dispatch пойдёт уже объект)
@АндрейАстанаев-п9х
@АндрейАстанаев-п9х Жыл бұрын
короче, когда сидишь и выстраиваешь логику в голове, как это работает с мелочей, то ответ сам приходит в голову
@SergioWahaWaher
@SergioWahaWaher 3 жыл бұрын
Есть какой-то адекватный способ избавится от конструкции "dispatch( fetchCustomers() )" внутри компонентов? Т.е. просто импорт и вызов fetchCustomers(args)
@UlbiTV
@UlbiTV 3 жыл бұрын
Есть, посмотрите родик на канале typescript react redux
@stasonnl777
@stasonnl777 3 жыл бұрын
А если я хочу в дефолт стейт закинуть данные с сервера, как это сделать, через thunk или в редьюссере?
@UlbiTV
@UlbiTV 3 жыл бұрын
Через thunk
@PieceOfInternet
@PieceOfInternet 9 ай бұрын
Спасибо за урок! Немного не понял механизм того как диспатч прикодывает сам себя внутри параметра функции, в которой он же и используется. То есть по факту "как-то это делает" но понимания "как" нет.
@itsancho
@itsancho 7 ай бұрын
Для этого придется почитать документацию. Понять enhancers, понять middleware, подебажить, можно исходники потом глянуть если поймёте их в самой либе))
@lexache1806
@lexache1806 Жыл бұрын
settings💪💪💪
@ЕрджаникГаспарян-н5н
@ЕрджаникГаспарян-н5н 2 жыл бұрын
@Ulbi TV Привет, а можешь ответить, вот у нас thunk я так понимаю проверяет, если экшен - функция, то передает туда диспатч и ещё и гетСтэйт, так вот зачем этот гет стейт нужен и как его мжно применить, я вот не могу понять
@UlbiTV
@UlbiTV 2 жыл бұрын
Привет) иногда бывают сложные экшны, внутри которых используются данные из стейта, как эти данные получить, если не использовать гетСтейт?
@drdev_blog
@drdev_blog 11 ай бұрын
Спасибо за видео! Будет ли на канале видео по современным концепциям использования slices и екстраредюсерам? Если уже было, сорян, еще не все выучил на канале!
@UlbiTV
@UlbiTV 11 ай бұрын
Продвинутый редакс ролик на канале
@meyb8239
@meyb8239 3 жыл бұрын
Привет. Можешь объяснить пожалуйста для чего делать такой вложений объект состояния, если используем комбайнРедюсер. Поясню, зачем для кастомер делать объект с полем кастомер, если можно сразу сделать этот стейт массивом. Соответственно в редюсере не нужно распаковывать стейт, поскольку стейт это и есть сам массив здесь, и можем сразу возвращать например return state.filter(...)
@ПавелФёдоров-ь3ж
@ПавелФёдоров-ь3ж Жыл бұрын
а если еще одно поле надо будет в объект состояния добавить?
@zakiro4277
@zakiro4277 2 жыл бұрын
урок длится 4 минуты но я уже 3 дня не могу понять откуда что как да почему работает)
@zakiro4277
@zakiro4277 2 жыл бұрын
так и не совсем понял но уже просто наизусть выучил как работает
@void6237
@void6237 Жыл бұрын
@@zakiro4277 Примерно тоже самое, что конкретно делает dispatch, как в fetchCustomers появляется dispatch, как fetchCustomers возвращает функцию которая возвращает хрен пойми что и как это вообще работает?
@protonys
@protonys Жыл бұрын
Redux thunk, к сожалению, не так легко зашёл. Попробуем Redux Saga
@oleksiishkulipa1626
@oleksiishkulipa1626 2 жыл бұрын
то есть по сути, thunk & saga нужны для того что бы убрать бизнес логику запросов на сервер с useEffect или с каких -то других функций в компоненте, то есть у нас получится 3ри так скажем оболочки которые отвечаю за свои действия: ui - component, редакс - как хранилище данных, и thunk || saga - как асинхронные запросы. Если без thunk & saga, то это(async запросы) ещё раз повторюсь лежало бы в ui - component, я верно понял? Заранее большое спасибо.
@Программирование-р2г
@Программирование-р2г Жыл бұрын
я вообще хз, откуда я знаю
@langonar
@langonar 8 ай бұрын
Без redux-thunk fetchCustomers тоже срабатывает как надо. Получается, redux-thunk уже не актуален и всё уже есть в redux-toolkit?
@aldarzhai
@aldarzhai 10 күн бұрын
Да, в доках рекомендуют вместо createStore использовать configureStore из редакс тулкита, который под капотом уже включает миддлвар, а именно thunk и поэтому при создании сторе можно указывать только редьюсер, если конечно будете использовать только thunk, если другой миддлвар, то его уже надо подключать
@buries_r
@buries_r 2 жыл бұрын
0:29 Ссылка на вебсокет, а не middleware )
@DiniGoodini
@DiniGoodini 2 жыл бұрын
Ulbi я делал проект используя редакс тулкит, и асинхронные операции работали без thunk'a... как так .
@UlbiTV
@UlbiTV 2 жыл бұрын
Там по дефолту фанк встроен
@andreynasuto9734
@andreynasuto9734 2 жыл бұрын
Черт! 10 раз перепроверил код, вылезала ошибка Uncaught Error: Actions must be plain objects. Use custom middleware for async actions. В итоге помог рестарт npm))
@sagiden1343
@sagiden1343 2 жыл бұрын
it's cool
@quietsonya
@quietsonya 2 жыл бұрын
Возможно, ошибка в начале ролика была специальной, но меня совсем с толку сбивает такое. В начале Тимур пытался получить payload из ...state.payload, и я по итогу 30 минут сижу в недоумении и пытаюсь понять, вместо того чтобы ролик сразу до конца досмотреть и увидеть исправление ошибки. Когда в таком простом месте я начинаю думать что я ничего не понимаю, мотивация падает. Думаю, не у одного меня такое.
@FireTeen100
@FireTeen100 Жыл бұрын
Подскажите пожалуйста, я правильно понял или нет. Мы при нажатии на кнопку, которая добавляет массив пользователей с сервера - вызываем диспатч, внутри которого находится результат выполнения fetchCustomers, а именно функция, которая должна выполнить запрос на сервер. Диспатч не умеет работать с чем-то кроме объекта с полем тайп и вместо того, чтобы отправлять тело этой функции в редьюсер, он вызывает эту функцию, в которую редакс отдает метод Диспатч и уже внутри этой функции после получения данных и преобразования их в нужный для нас объект происходит диспатч в редьюсер.
@victor5485
@victor5485 Жыл бұрын
Я так же понял. Редакс как-то автоматически отдает метод диспатч в функцию?
@ПавелОсокин-ш3г
@ПавелОсокин-ш3г Жыл бұрын
Тоже интересно почему вообще отрабатывает код с возвращенной функцией: dispatch( function(dispatch){...} )
@myjam505
@myjam505 2 жыл бұрын
всплывающая подсказка на 30 секунде ведет на Websockets, не Middleware
@kenanhaciyev3759
@kenanhaciyev3759 Жыл бұрын
это слишком понятно для простого смертного
@UlbiTV
@UlbiTV Жыл бұрын
Спасибо за поддержку :)
@TheOLENISHOW
@TheOLENISHOW 2 жыл бұрын
Отличные уроки, спасибо. У меня возник баг, если два раза подряд подгрузить users из плейсхолдера, а потом начать их удалять, то приложение себя странно ведет.В инструментах состояние меняется и при клике объекты удаляются из хранилища, но по факту блоки с именами уже удаленных пользователей всё еще отрендерены, даже при пустом хранилище. Пытаюсь разобратся.
@draussen10
@draussen10 11 ай бұрын
Это происходит из-за того, что у объектов пользователей одинаковый id.
@romanbolshiyanov
@romanbolshiyanov 3 жыл бұрын
понятно но сага интереснее
@evgen_frontend_rostov
@evgen_frontend_rostov 2 жыл бұрын
React Redux Thunk
@ВкусныйЧай-к3ъ
@ВкусныйЧай-к3ъ 3 жыл бұрын
kzbin.info/www/bejne/eaXViKKOlLB3oKc - не всплывает никаких подскахок.
@РустамАетбаев-р4к
@РустамАетбаев-р4к 2 ай бұрын
ПАМАГИТЕ !!! Горит ошибка: Actions must be plain objects. Use custom middleware for async actions.
@faizulla5838
@faizulla5838 3 жыл бұрын
Спасибо огромное! Но пожалуйста произноси "th" так называемое "межзубное С" как просто С если не получается , но не Ф thanl=ссанк ... просто ..."Ё-п-р-с-т" в 4 мин ролике 30 мин !!! искал "Redux Ффанк" (3:38) - пока в самом начале ролика не увидел в терминале ' npm i redux-thunk' ))))
@СергейЦветов-н4н
@СергейЦветов-н4н 2 жыл бұрын
Тут мы изучаем английский ?
@victor5485
@victor5485 Жыл бұрын
Если не получается межзубное, то правильней произносить "Танк"
@tarasnostress
@tarasnostress 7 ай бұрын
просто отвал башки
@tarasnostress
@tarasnostress 6 ай бұрын
пройдя курс по реакт, немного подразобравшись, спустя 3 недели содержание плейлиста уже кажется вполне понятным :3
@singlebw4065
@singlebw4065 3 жыл бұрын
я чё то не понимаю в чём санки отличаются от такой записи ? const mapDispatchToProps = (dispatch) => { let getPosts = (count) => { fetch('jsonplaceholder.typicode.com/posts?userId=1') .then(response => response.json()) .then(json => disparch( actionPosts(json) )) .catch(console.err) } return { getPosts } } export default connect(mapStateToProps, mapDispatchToProps)(Home);
@ivanoliinyk8404
@ivanoliinyk8404 2 жыл бұрын
Великолепно просто объяснение!!!!
@Алексей-и8ю7ю
@Алексей-и8ю7ю 2 жыл бұрын
Спасибо
@UlbiTV
@UlbiTV 2 жыл бұрын
Спасибо за поддержку ❤️
@Elena_Petrenko
@Elena_Petrenko Жыл бұрын
👍
6. Redux и React. Redux saga асинхронные actions
13:50
100+ Web Development Things you Should Know
13:18
Fireship
Рет қаралды 1,5 МЛН
Running With Bigger And Bigger Lunchlys
00:18
MrBeast
Рет қаралды 46 МЛН
Шок. Никокадо Авокадо похудел на 110 кг
00:44
React Query за 10 минут! Быстрый курс
11:34
Archakov Blog
Рет қаралды 54 М.
Что такое Redux Middleware?
14:52
Веб-разработка - DevMagazine
Рет қаралды 11 М.
Кто и почему убивает Фронтенд?
20:40
Миша Ларченко
Рет қаралды 24 М.