#3: React Hooks - useRef

  Рет қаралды 66,974

Archakov Blog

Archakov Blog

Күн бұрын

Пікірлер: 154
@oleksiimishchenko5827
@oleksiimishchenko5827 Жыл бұрын
Мало того, что все доходчиво и в деталях объяснил, так еще и грамотной речью и с четкой дикцией! Я в восторге от автора!
@kulikboxx
@kulikboxx 3 жыл бұрын
Гений чистой красоты! Снимаю шляпу и аплодирую стоя! Плейлист по реакт-хукам просто бомба! Спасибо тебе огромное, добрый человек!
@vadim9634
@vadim9634 3 жыл бұрын
это лучшее что я видел о этом хуке ,спасибо
@ВладОся-з7ь
@ВладОся-з7ь 3 ай бұрын
как я обожаю когда человек который учит угадывает мысли человека как бы он сделал и как надо делать , продолжай в том же духе , очень полезно )
@Дмитрий-б5в
@Дмитрий-б5в 3 жыл бұрын
Я в проде работаю более полугода и до этих пор не понимал до конца хуки, смотрел кучу видосов по хукам, но это видео оказалось самым внятным и самым разборчивым.
@ВадимХаликов-н2е
@ВадимХаликов-н2е 2 жыл бұрын
В компании?
@lovikuanyshev
@lovikuanyshev 2 жыл бұрын
Спасибо огромное за такое классное объяснение! Мне понравилось, что ты первую часть урока посвятил тому как решить проблему используя "костыли" и другие похожие инструменты, а потом уже показал как правильно делать, и еще тот момент, что ты детально описываешь поведение компонента через все жизненные циклы так информация очень хорошо усваивается, максимально доходчиво!
@sviatbondar1721
@sviatbondar1721 2 жыл бұрын
Просто без лишнего, и такие мелочи не везде узнаешь. Спасибо!!
@AmirLT-x6y
@AmirLT-x6y Жыл бұрын
Thaks. All iš very clear. No questions. It is the best video about useEffect🎉🎉🎉🎉🎉🎉🎉🎉
@Virisound
@Virisound 2 жыл бұрын
Коммент в поддержку видео: "Даaa..., отличная работа".
@unknown.6914
@unknown.6914 11 ай бұрын
Прекрасный урок, спасибо
@11wingsofdeath
@11wingsofdeath Жыл бұрын
Благодарю ❤ очень круто объясняешь механику
@Poziratelb
@Poziratelb 4 жыл бұрын
Как раз вожусь с ними. Дают много возможностей
@blackwood8816
@blackwood8816 Жыл бұрын
Как же все подробно и доходчиво объяснил, благодарю 🙏
@MAKSIMTSA
@MAKSIMTSA Жыл бұрын
Круто! НАконец-то все понял. По полочкам разложил!)
@ValentinTayursky
@ValentinTayursky 2 жыл бұрын
Спасибо за объяснения. Весьма полезное видео!
@volodya_kod6
@volodya_kod6 7 ай бұрын
Спасибо мужик, все стало понятно!
@alexandrzhuykov7355
@alexandrzhuykov7355 2 жыл бұрын
Самое крутое объяснение этого хука!!! СПАСИБО!!
@DzhavidR
@DzhavidR 4 жыл бұрын
круту, круто! Спасибо. Давно ждал по хукам видео именно от тебя, именно потому что хорошо объясняешь. Надеюсь и по остальным хукам будет видео, в частности useReducer вообще туго дается
@ВладиславМаслов-л7ж
@ВладиславМаслов-л7ж 4 жыл бұрын
Супер полезное видео, спасибо за труд!
@bur5153
@bur5153 3 жыл бұрын
1)Нужно для того что бы достучаться правильно до дом элемента, и повесить на него обработчик событий или достучаться до какой либо функции этого элемента(audio,video(play,pause и т д.) 2)Нужен для того что бы хранить актуальные данные из переменной(на которой есть useRef), так как при рендере компоненты ссылка на актуальную переменную теряется
@drewnaumenko2469
@drewnaumenko2469 3 жыл бұрын
" повесить на него обработчик событий " ну вот немного непонятно именно в каких случаях делать так как в видео а в каких console.log('scroll')}>
@kava648
@kava648 3 жыл бұрын
@@drewnaumenko2469 в теории, если тебе не нужно будет, скажем, в дальнейшем удалять обработчик, то можно и просто добавить onScroll
@drewnaumenko2469
@drewnaumenko2469 3 жыл бұрын
@@kava648 кстати хорошая тема поднялась Когда мы через атрибуты обработчики навешиваем мы и никогда их не удаляли. например onClick или любой другой евент. Click и всё; мы же не удаляем обработчик мы вот так на кнопку обработчик навесили и всё почему со скоролом мы должны удалять?
@AndreyEricksonGame
@AndreyEricksonGame 3 жыл бұрын
@@drewnaumenko2469 Как я думаю, мы должны удалять обработчик события - 'скролл', как ни странно, чтобы отменить это событие скролла. Потому что пока мы не удалим прослушку события, то логично, что событие скролл никуда не денется и callback внутри addEventList будет вызываться при каждом скролле. Надеюсь ответил на ваш вопрос
@drewnaumenko2469
@drewnaumenko2469 3 жыл бұрын
@@AndreyEricksonGame ну это если мы его навешиваем через addEventListener , а если через атрибуты? точно не знаю но через атрибуты React под капотам сам чистит всё, видимо так.
@МасияГусейнов-ъ5е
@МасияГусейнов-ъ5е 3 жыл бұрын
Будь здоров ! Спасибо !
@СеитханРискельдиев
@СеитханРискельдиев 3 жыл бұрын
Супер. Круто объясняешь. Продолжай
@daryaemelyanova1785
@daryaemelyanova1785 Жыл бұрын
Очень наглядно и пример хороший 👍
@БауржанКадискалиев
@БауржанКадискалиев 4 жыл бұрын
Спасибо большое за подробный материал
@alexrybalov8917
@alexrybalov8917 3 жыл бұрын
Это видео меня спасло. Благодарю.
@AleksandrKovalchuk-z8m
@AleksandrKovalchuk-z8m 4 жыл бұрын
Привет. Спасибо за отличный материал!
@alexsandr9444
@alexsandr9444 4 жыл бұрын
Круто объясняешь, давай про остальные хуки
@ВладимирГугин-ш7щ
@ВладимирГугин-ш7щ 3 жыл бұрын
На 6:10 уже сам реакт намекает нам Assignments to the 'ultElem' variable from inside React Hook useEffect will be lost after each render. To preserve the value over time, store it in a useRef Hook and keep the mutable value in the '.current' property. Otherwise, you can move this variable directly inside useEffect react-hooks/exhaustive-deps
@ВладиславКильчевский-к5ц
@ВладиславКильчевский-к5ц 3 жыл бұрын
Переписывал следом за тобой до таймеров, и не понимал, почему у меня нет в логах сообщения о скролле, спустя минут 30 допер что без css стилей таких же, он не фиксируется ) Видосы крутые!
@cradleofkaschenko2057
@cradleofkaschenko2057 3 жыл бұрын
Про сам хук начинается с 12:00. Революционный подход!
@nikitakurochka2752
@nikitakurochka2752 4 жыл бұрын
Очень крутое видео. Долгое время мучали вопросы по этой теме) А тперь все пушка !!
@strel9
@strel9 4 жыл бұрын
лукос не глядя, какраз хотел с useRef разобраться
@bubinbei
@bubinbei 3 жыл бұрын
ul { height: 150px; overflow: auto; } необходимо добавить это css свойство, иначе скрол не будет отрабатывать
@СвириденкоВолодимир-х1с
@СвириденкоВолодимир-х1с 3 жыл бұрын
Ценю тебя мужик!
@bohdanshyrii2380
@bohdanshyrii2380 7 ай бұрын
спасибо мужик! очень помог!
@br_ann
@br_ann Жыл бұрын
Спасибо за объяснение!
@romankhudovekov5145
@romankhudovekov5145 4 жыл бұрын
Благодарю за полезное видео!
@dimags500
@dimags500 2 жыл бұрын
Очень хороши ваши уроки , спасибо
@Witcher-simple-YouTube
@Witcher-simple-YouTube Жыл бұрын
Очень хочется в твоей подаче послушать про mobx
@crypto4elik
@crypto4elik Жыл бұрын
очень ясно! спасиб!
@wither-it-channel
@wither-it-channel Жыл бұрын
лайк не глядя
@strel9
@strel9 4 жыл бұрын
сделай видос собеса на Джуна на Реакт, может одного или нескольких подписчиков (или как вариант вакансию на HH разместить), думаю будет популярный видос
@-web2378
@-web2378 4 жыл бұрын
Думаю нет
@ultraduck100
@ultraduck100 4 жыл бұрын
@@-web2378 ну да, все же сразу на мидла или сеньера идут
@-web2378
@-web2378 4 жыл бұрын
Ruslan Nagiev тут не в этом дело. Либо ты идёшь и проходишь собеседование на джуна, либо ты сидишь и смотришь видос на ютубе. Если человек хочет найти работу, в частности джуна, то он берет и идёт и ползёт на собеседование. А у вас получается другой подход, который называется «Сижу смотрю видос про собеседование джуном, но на джуна не пойду ещё года два» . И чем больше вы ждёте такой ролик, тем больше вероятность того, что вы будете джуном, который так и не пойдёт на собеседование, но будет с удовольствием переносить все тяготы и невзгоды через другого, точнее через того, который видос этот снимет. Вот и вывод, что вам легче посмотреть видос по собеседованию часа на два, чем сходить и самому пройти эти собеседования.
@strel9
@strel9 4 жыл бұрын
Нукат - web так то же самое и про мидла сказал можно😂 про любое собеседование😂
@ultraduck100
@ultraduck100 4 жыл бұрын
@@-web2378 да, это логично и я с вами согласен, НО речь то шла о популярности такого видео) я думаю, каждый (или большенство) хоть раз да и пытался найти такой формат видео. так что автору довольно выгодно должно быть в плане просмотров. я уверен, что самые популярные видео на этом канале именно собесы. это можно легко проверить
@xmarsianca
@xmarsianca 2 жыл бұрын
Прекрасное объяснение!! Спасибо!
@aliaksandrjanuary5305
@aliaksandrjanuary5305 3 жыл бұрын
В последнем примере также можно было не прибегать к ref сохраняя таймер в стейте используя useState. Мне кажется конкретно для такой задачи это более уместное решение.
@TheMaratnasyrov
@TheMaratnasyrov 3 жыл бұрын
тоже интересует. почему бы для этого не использовать useState, в чем плюсы и минусы такого решения?
@ArchakovBlog
@ArchakovBlog 3 жыл бұрын
Почему уместней юзать там setState? И почему useRef не подходит?
@olegbukovskiy7484
@olegbukovskiy7484 Жыл бұрын
Благодарю, было полезно 👍
@Mark1-f2n
@Mark1-f2n 4 жыл бұрын
братан ждем про useCallback от тебя
@ruslankarimov6490
@ruslankarimov6490 Жыл бұрын
спасибо!!!
@tatyanamaksymenko289
@tatyanamaksymenko289 4 жыл бұрын
Благодарочка!)
@kseniazh1738
@kseniazh1738 3 жыл бұрын
Спасибо за отличные примеры!!! Вопрос: хранение данных в созданном объекте Ref напоминает создание глобальной переменной с хранением в useRef. Можно ли к созданному объекту Ref в одном файле обращаться из другого файла? Типа как брать/менять данные из Redux? Если да, то как это сделать и влияет ли подчиненность/очередность создания документов? Или Ref работает только здесь и сейчас? Т.е. без перезагрузки ушли из формы в другую, объект исчез. Вернулись - счетчик обнулился, создался новый объект, снова нажимай на кнопку?
@ArchakovBlog
@ArchakovBlog 3 жыл бұрын
Можно использовать useContext, если нужно прям глобально с ним работать или прокинуть в пропсы этот реф, чтобы передать его дальше. Реф работает только в конкретном компоненте, как useState, например.
@serg1221
@serg1221 3 жыл бұрын
великолепно
@YevhenHromov
@YevhenHromov Жыл бұрын
Спасибо огромное за урок! По мере прохождения появился вопрос) Если запустить таймер несколько раз подряд, создадутся разные ссылки (разные айди таймеров), и остановить уже просто по первой ссылке все таймеры не выйдет. Как обойти эту проблему? можно ли иметь доступ к каждой новой созданной ссылке поочерёдно или нужно как-то избегать пересоздания новых ссылок. Пока писал, понял, что ответ где-то в районе меморизации или useCallback'a)
@dinmukhammedtleuzhanuly1225
@dinmukhammedtleuzhanuly1225 2 жыл бұрын
Спасибо, за крутое обьяснение)
@ggadoctb
@ggadoctb Жыл бұрын
Каждый, кто посмотрел данный плейлист, искал медь, а нашел золото)
@kenanhaciyev3759
@kenanhaciyev3759 Жыл бұрын
спасибо
@challengetolearnenglishfor9823
@challengetolearnenglishfor9823 6 ай бұрын
Thank you very much
@ALEKSEY_77737
@ALEKSEY_77737 3 жыл бұрын
отлично!
@wittyvillain
@wittyvillain 2 жыл бұрын
Хороший пример! А как сделать чтобы скролл автоматически опускался в конец списка?
@skeelo3157
@skeelo3157 3 жыл бұрын
В примере с массивом чисел так же бы сработал useMemo?
@apa6368
@apa6368 4 жыл бұрын
Салам алейкум, расскажи про useContex, самая запутанная, как по мне, тема
@DzhavidR
@DzhavidR 4 жыл бұрын
а что у тебя за тема VSCODE? понравилось как отображаются стрелки в стрелочных функциях
@DzhavidR
@DzhavidR 4 жыл бұрын
если кому интересно, то это не тема была, а лигатуры, нашел Fira Code github.com/tonsky/FiraCode
@privatehost7117
@privatehost7117 4 жыл бұрын
Изыди, демон, с белой темой
@ВсеволодЗорин-л6н
@ВсеволодЗорин-л6н 3 жыл бұрын
@@privatehost7117 не бурчи,! всё збс! не переживай, скоро ты поймёшь почему именно так ;)
@Wazelinchik
@Wazelinchik 4 жыл бұрын
Теперь есть чем заняться в 2 часа ночи.
@ОлегОвчинников-щ9с
@ОлегОвчинников-щ9с Жыл бұрын
🔥🔥🔥🔥🔥🔥🔥
@frontman6849
@frontman6849 4 жыл бұрын
ну почему? ну почему белая тема?
@adam-front
@adam-front 2 жыл бұрын
Ночью надо спать!
@amelianceskymusic
@amelianceskymusic 2 жыл бұрын
Согласен, жесть
@localhost666
@localhost666 Жыл бұрын
Наоборот отлично, не режет глаза при переходе от IDE в браузер
@snakevenom8039
@snakevenom8039 Жыл бұрын
иди наҩӱйӣ😅
@frontman6849
@frontman6849 Жыл бұрын
@@snakevenom8039 неа
@akhmedmagomedov324
@akhmedmagomedov324 Жыл бұрын
Пожалуйста обьясните как в current попала цифра 4, и почему она растет если запускать таймер?
@BeDb_MeDb
@BeDb_MeDb 3 жыл бұрын
Привет, прошу прощения. Вы сказали, на 11:50 примерно, что нельзя в глобальную область выносить. Я подключаю модуль с сокетами, подключить его в функции ясно что не могу. Потом я использую этот сокет в функции. Вопрос: что я делаю не так? (сейчас по Вашим видео пытаюсь понять, думаю, что моя ошибка как раз в неправильном понимании того, что эти хуки есть такое) Однако, если я сейчас в правильное место не вынесу подключение сокета и не налажу это все грамотно - задолбаюсь дебажить (по чесноку уже задолбался:-D) Большое спасибо за внимание.
@MarinYehor
@MarinYehor 4 жыл бұрын
Денис, подскажи, я не понял последнее с setInterval 1) почему timerRef.current хранил в себе число 4? 2) А так же почему нужно было добавлять в функции addNumber prev state? Разве при вызове addNumber не меняется state и уже при следующем вызове addNumber не должно ли логически браться новый state с добавленным числом? Ведь происходит ререндер и данная функция addNumber уже должна получать актуальное значение state Спасибо за выпуск, целую тебе руки)) Жду useCallback видео с нетерпением
@dimeliora
@dimeliora 3 жыл бұрын
1. useRef создаёт объект с полем current. Далее мы можем его использовать для сохранения любой информации и быть уверенными, что она не потеряется при перерендере. setInterval при вызове возвращает номер запущенного таймера, он нужен для того, чтобы потом этот таймер сбросить (clearInterval принимает номер таймера, который надо сбросить). Если его не сохранить, то сбросить таймер после не получится. В данном случае таймер вернул номер 4, его и сохранили, а потом использовали для сброса. 2. Документация гласит, что если новое состояние зависит от старого (всякие коллекции, счётчики и т.д.), то правильно будет в функцию обновления state отдавать колбек. Этот колбек примет аргументом актуальное значение state, и на его основе мы создаём новое.
@dychkos
@dychkos 3 жыл бұрын
Большое спасибо за информативное видео!
@romanpetrashkevich5292
@romanpetrashkevich5292 3 жыл бұрын
Нужно немного поправить метод start, для защиты от множественного нажатия на кнопку старт. const start = () => { if (timerRef.current) { clearInterval(timerRef.current); } timerRef.current = setInterval(addNumber, 1000); };
@westside9145
@westside9145 4 жыл бұрын
Где можно посмотреть характеристики твоего компьютеа, было бы здорово увидеть видео про твоё рабочее место и пространство
@eugenegavrilov2618
@eugenegavrilov2618 4 жыл бұрын
как это поможет с изучением react'a?
@westside9145
@westside9145 4 жыл бұрын
@@eugenegavrilov2618 брат, мир шире чем "изучение реакта"
@eugenegavrilov2618
@eugenegavrilov2618 4 жыл бұрын
@@westside9145 согласен, но ты задал вопрос в коменете, под уроком на рекате)
@alexsedmoy2200
@alexsedmoy2200 Жыл бұрын
👍👍👍
@darkside2436
@darkside2436 4 жыл бұрын
Когда 8 часть по клону твиттера?
@petrmurashko6884
@petrmurashko6884 2 жыл бұрын
Где найти шрифт со значком => для VS code?
@ДанилоНовосад-ь7х
@ДанилоНовосад-ь7х 4 жыл бұрын
Спасибо, а как ты сделал плавный курсор в vs code?
@DzhavidR
@DzhavidR 4 жыл бұрын
Зайди в настройки vsCode - в поиске набираешь курсор - и выбираешь Editor cursor blinking: expand
@user-bo7mb9cf4d
@user-bo7mb9cf4d 3 жыл бұрын
Топ!
@samolevich
@samolevich Жыл бұрын
Так много магии
@АлександрСосо-щ1б
@АлександрСосо-щ1б 2 жыл бұрын
Приветствую! Спасибо за урок! только не понятно, может ли быть несколько useRef внутри одной компоненты для выполнения разных задач, или свойство current одно на компоненту?
@ArchakovBlog
@ArchakovBlog 2 жыл бұрын
Если разные задачи, то вполне может
@michaeldevichenskiy4588
@michaeldevichenskiy4588 3 жыл бұрын
Где у вас учиться , ну или как ?
@Mike-hp3fh
@Mike-hp3fh 4 жыл бұрын
В svelte все, что есть в React сделано в 100 раз проще. Но приходится учить React, т.к. он есть везде, а о svelte еще мало кто знает.
@miloman1995s
@miloman1995s 4 жыл бұрын
учил полгода реакт, взяли на vue..... подскажите че посмотреть типо этого канала но по vue.... спс
@kawaikaino5277
@kawaikaino5277 4 жыл бұрын
Ахаха)) забавно
@jorgenUA
@jorgenUA 4 жыл бұрын
доку читай, она хорошая - быстрее будет
@alienspro
@alienspro 3 жыл бұрын
Смени работу на реакт, ониперспективнее в разы. А для хорошего дохода только Angular. Очень юольшие корпоротивные приложения только га Angular последнее время делают. Nest.js еще сильнее популяризирует это.
@miloman1995s
@miloman1995s 3 жыл бұрын
@@kawaikaino5277 забавно то, что выучил vue , писал на нем с кайфом 8 месяцев, щас опять нужен реакт, снова вспоминаю и переучиваю react) вот это забавно
@MadBlissOff
@MadBlissOff 3 жыл бұрын
Что за клавиатура? Такой звук клавиш приятный, прям не могу
@bukanaka
@bukanaka 3 жыл бұрын
Может механика с голубыми свичами
@MadBlissOff
@MadBlissOff 3 жыл бұрын
@@bukanaka у голубых свитчей щелчок есть, а тут его нет
@abobus_xero
@abobus_xero 3 жыл бұрын
Почему у меня не выполняется функция handleScroll при прокрутке,но с обычным кликом все работает. Все сделано как на видео?
@ПродюссерЛетов
@ПродюссерЛетов 3 жыл бұрын
Привет, прошло 8 месяцев, ты решил проблему?
@abobus_xero
@abobus_xero 3 жыл бұрын
@@ПродюссерЛетов честно уже не помню, гуглил и понял почему, но на данный момент с этим не было проблем больше
@ПродюссерЛетов
@ПродюссерЛетов 3 жыл бұрын
@@abobus_xero понял, спасибо за своевременный ответ!
@АрчибальтГугенов
@АрчибальтГугенов Жыл бұрын
очень запутанный пример
@Mike-hp3fh
@Mike-hp3fh 4 жыл бұрын
Очевидно, что если в компоненте использовать несколько React.useRef и вызывать их в случайном порядке, или просто не в строго определенном порядке, то все полетит к чертям. Новички конечно об этом и не подозревают.
@theBarracuda_
@theBarracuda_ 2 жыл бұрын
Из-за чего?
@Mike-hp3fh
@Mike-hp3fh 2 жыл бұрын
@@theBarracuda_ из-за того что при таком подходе (я имею ввиду возможности JavaScript которые использует React) это единственный способ связать данные с кодом. На каждом вызове useRef увеличивать внутренний счетчик на 1 и брать следующий из объект из внутреннего массива.
@alexeystaroverov4804
@alexeystaroverov4804 3 жыл бұрын
Scroll всегда неудачный пример там куча нюансов не связных с целевой функцией
@someguy4973
@someguy4973 2 жыл бұрын
"Но это не есть хорошо, мы должны использовать нормальное решение". Далее автор использует "нормальное решение", не объяснив а почему все же "это не есть хорошо", потому что видимо сам не разобрался в этом вопросе.
@harrisonwinston2850
@harrisonwinston2850 2 жыл бұрын
а что тут разбираться? React рекомендует работать со своими инструментами, не используя DOM-манипуляции напрямую, чтобы не конфликтов с ним.
@Калабарака
@Калабарака Жыл бұрын
ничего не понятно вообще
@Mike-hp3fh
@Mike-hp3fh 4 жыл бұрын
Госспади какой же ужас этот React
@Liver_Room
@Liver_Room 7 ай бұрын
видео явно для полных нулей ато обясняют так будто мы обезяны безмозглые
@turalinov
@turalinov Жыл бұрын
Очень понятно, спасибо)
#4: React Hooks - useMemo + React.memo
25:38
Archakov Blog
Рет қаралды 72 М.
When Cucumbers Meet PVC Pipe The Results Are Wild! 🤭
00:44
Crafty Buddy
Рет қаралды 55 МЛН
За кого болели?😂
00:18
МЯТНАЯ ФАНТА
Рет қаралды 2,9 МЛН
HELP!!!
00:46
Natan por Aí
Рет қаралды 75 МЛН
бабл ти гель для душа // Eva mash
01:00
EVA mash
Рет қаралды 10 МЛН
#1: React Hooks - useState
27:47
Archakov Blog
Рет қаралды 66 М.
Зачем на самом деле нужен хук useCallback
8:33
Михаил Непомнящий
Рет қаралды 44 М.
Never Forget React forwardRef Again
9:33
Coding in Public
Рет қаралды 22 М.
React useRef() hook introduction 🗳️
11:18
Bro Code
Рет қаралды 22 М.
ТОП 10 вопросов на собеседовании ReactJS
29:52
Веб-разработка - DevMagazine
Рет қаралды 48 М.
Learn React Hooks: useRef - Simply Explained!
12:42
Cosden Solutions
Рет қаралды 112 М.
React Query за 10 минут! Быстрый курс
11:34
Archakov Blog
Рет қаралды 58 М.
#26 Погружаемся в useEffect - ReactJS Полный курс
26:55
Евгений Паромов | Front-end
Рет қаралды 9 М.
When Cucumbers Meet PVC Pipe The Results Are Wild! 🤭
00:44
Crafty Buddy
Рет қаралды 55 МЛН