#3: React Hooks - useRef

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

Archakov Blog

Archakov Blog

Күн бұрын

Пікірлер: 154
@vadim9634
@vadim9634 3 жыл бұрын
это лучшее что я видел о этом хуке ,спасибо
@ВладОся-з7ь
@ВладОся-з7ь 2 ай бұрын
как я обожаю когда человек который учит угадывает мысли человека как бы он сделал и как надо делать , продолжай в том же духе , очень полезно )
@Дмитрий-б5в
@Дмитрий-б5в 3 жыл бұрын
Я в проде работаю более полугода и до этих пор не понимал до конца хуки, смотрел кучу видосов по хукам, но это видео оказалось самым внятным и самым разборчивым.
@ВадимХаликов-н2е
@ВадимХаликов-н2е 2 жыл бұрын
В компании?
@lovikuanyshev
@lovikuanyshev 2 жыл бұрын
Спасибо огромное за такое классное объяснение! Мне понравилось, что ты первую часть урока посвятил тому как решить проблему используя "костыли" и другие похожие инструменты, а потом уже показал как правильно делать, и еще тот момент, что ты детально описываешь поведение компонента через все жизненные циклы так информация очень хорошо усваивается, максимально доходчиво!
@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 под капотам сам чистит всё, видимо так.
@sviatbondar1721
@sviatbondar1721 Жыл бұрын
Просто без лишнего, и такие мелочи не везде узнаешь. Спасибо!!
@11wingsofdeath
@11wingsofdeath Жыл бұрын
Благодарю ❤ очень круто объясняешь механику
@unknown.6914
@unknown.6914 9 ай бұрын
Прекрасный урок, спасибо
@volodya_kod6
@volodya_kod6 5 ай бұрын
Спасибо мужик, все стало понятно!
@Virisound
@Virisound Жыл бұрын
Коммент в поддержку видео: "Даaa..., отличная работа".
@kulikboxx
@kulikboxx 2 жыл бұрын
Гений чистой красоты! Снимаю шляпу и аплодирую стоя! Плейлист по реакт-хукам просто бомба! Спасибо тебе огромное, добрый человек!
@ValentinTayursky
@ValentinTayursky 2 жыл бұрын
Спасибо за объяснения. Весьма полезное видео!
@DzhavidR
@DzhavidR 4 жыл бұрын
круту, круто! Спасибо. Давно ждал по хукам видео именно от тебя, именно потому что хорошо объясняешь. Надеюсь и по остальным хукам будет видео, в частности useReducer вообще туго дается
@blackwood8816
@blackwood8816 Жыл бұрын
Как же все подробно и доходчиво объяснил, благодарю 🙏
@MAKSIMTSA
@MAKSIMTSA Жыл бұрын
Круто! НАконец-то все понял. По полочкам разложил!)
@bubinbei
@bubinbei 3 жыл бұрын
ul { height: 150px; overflow: auto; } необходимо добавить это css свойство, иначе скрол не будет отрабатывать
@СвириденкоВолодимир-х1с
@СвириденкоВолодимир-х1с 3 жыл бұрын
Ценю тебя мужик!
@bohdanshyrii2380
@bohdanshyrii2380 5 ай бұрын
спасибо мужик! очень помог!
@alexrybalov8917
@alexrybalov8917 3 жыл бұрын
Это видео меня спасло. Благодарю.
@daryaemelyanova1785
@daryaemelyanova1785 Жыл бұрын
Очень наглядно и пример хороший 👍
@br_ann
@br_ann Жыл бұрын
Спасибо за объяснение!
@alexsandr9444
@alexsandr9444 4 жыл бұрын
Круто объясняешь, давай про остальные хуки
@wither-it-channel
@wither-it-channel Жыл бұрын
лайк не глядя
@ВладиславКильчевский-к5ц
@ВладиславКильчевский-к5ц 3 жыл бұрын
Переписывал следом за тобой до таймеров, и не понимал, почему у меня нет в логах сообщения о скролле, спустя минут 30 допер что без css стилей таких же, он не фиксируется ) Видосы крутые!
@dimags500
@dimags500 2 жыл бұрын
Очень хороши ваши уроки , спасибо
@kenanhaciyev3759
@kenanhaciyev3759 Жыл бұрын
спасибо
@crypto4elik
@crypto4elik Жыл бұрын
очень ясно! спасиб!
@olegbukovskiy7484
@olegbukovskiy7484 Жыл бұрын
Благодарю, было полезно 👍
@aliaksandrjanuary5305
@aliaksandrjanuary5305 3 жыл бұрын
В последнем примере также можно было не прибегать к ref сохраняя таймер в стейте используя useState. Мне кажется конкретно для такой задачи это более уместное решение.
@TheMaratnasyrov
@TheMaratnasyrov 3 жыл бұрын
тоже интересует. почему бы для этого не использовать useState, в чем плюсы и минусы такого решения?
@ArchakovBlog
@ArchakovBlog 3 жыл бұрын
Почему уместней юзать там setState? И почему useRef не подходит?
@dinmukhammedtleuzhanuly1225
@dinmukhammedtleuzhanuly1225 2 жыл бұрын
Спасибо, за крутое обьяснение)
@tatyanamaksymenko289
@tatyanamaksymenko289 4 жыл бұрын
Благодарочка!)
@Mark1-f2n
@Mark1-f2n 4 жыл бұрын
братан ждем про useCallback от тебя
@serg1221
@serg1221 3 жыл бұрын
великолепно
@ОлегОвчинников-щ9с
@ОлегОвчинников-щ9с Жыл бұрын
🔥🔥🔥🔥🔥🔥🔥
@Witcher-simple-YouTube
@Witcher-simple-YouTube Жыл бұрын
Очень хочется в твоей подаче послушать про mobx
@ALEKSEY_77737
@ALEKSEY_77737 3 жыл бұрын
отлично!
@dychkos
@dychkos 3 жыл бұрын
Большое спасибо за информативное видео!
@Wazelinchik
@Wazelinchik 4 жыл бұрын
Теперь есть чем заняться в 2 часа ночи.
@romanpetrashkevich5292
@romanpetrashkevich5292 3 жыл бұрын
Нужно немного поправить метод start, для защиты от множественного нажатия на кнопку старт. const start = () => { if (timerRef.current) { clearInterval(timerRef.current); } timerRef.current = setInterval(addNumber, 1000); };
@apa6368
@apa6368 4 жыл бұрын
Салам алейкум, расскажи про useContex, самая запутанная, как по мне, тема
@skeelo3157
@skeelo3157 3 жыл бұрын
В примере с массивом чисел так же бы сработал useMemo?
@ggadoctb
@ggadoctb Жыл бұрын
Каждый, кто посмотрел данный плейлист, искал медь, а нашел золото)
@kseniazh1738
@kseniazh1738 3 жыл бұрын
Спасибо за отличные примеры!!! Вопрос: хранение данных в созданном объекте Ref напоминает создание глобальной переменной с хранением в useRef. Можно ли к созданному объекту Ref в одном файле обращаться из другого файла? Типа как брать/менять данные из Redux? Если да, то как это сделать и влияет ли подчиненность/очередность создания документов? Или Ref работает только здесь и сейчас? Т.е. без перезагрузки ушли из формы в другую, объект исчез. Вернулись - счетчик обнулился, создался новый объект, снова нажимай на кнопку?
@ArchakovBlog
@ArchakovBlog 3 жыл бұрын
Можно использовать useContext, если нужно прям глобально с ним работать или прокинуть в пропсы этот реф, чтобы передать его дальше. Реф работает только в конкретном компоненте, как useState, например.
@akhmedmagomedov324
@akhmedmagomedov324 Жыл бұрын
Пожалуйста обьясните как в current попала цифра 4, и почему она растет если запускать таймер?
@user-bo7mb9cf4d
@user-bo7mb9cf4d 3 жыл бұрын
Топ!
@BeDb_MeDb
@BeDb_MeDb 3 жыл бұрын
Привет, прошу прощения. Вы сказали, на 11:50 примерно, что нельзя в глобальную область выносить. Я подключаю модуль с сокетами, подключить его в функции ясно что не могу. Потом я использую этот сокет в функции. Вопрос: что я делаю не так? (сейчас по Вашим видео пытаюсь понять, думаю, что моя ошибка как раз в неправильном понимании того, что эти хуки есть такое) Однако, если я сейчас в правильное место не вынесу подключение сокета и не налажу это все грамотно - задолбаюсь дебажить (по чесноку уже задолбался:-D) Большое спасибо за внимание.
@DzhavidR
@DzhavidR 4 жыл бұрын
а что у тебя за тема VSCODE? понравилось как отображаются стрелки в стрелочных функциях
@DzhavidR
@DzhavidR 4 жыл бұрын
если кому интересно, то это не тема была, а лигатуры, нашел Fira Code github.com/tonsky/FiraCode
@privatehost7117
@privatehost7117 3 жыл бұрын
Изыди, демон, с белой темой
@ВсеволодЗорин-л6н
@ВсеволодЗорин-л6н 3 жыл бұрын
@@privatehost7117 не бурчи,! всё збс! не переживай, скоро ты поймёшь почему именно так ;)
@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, и на его основе мы создаём новое.
@darkside2436
@darkside2436 4 жыл бұрын
Когда 8 часть по клону твиттера?
@Mike-hp3fh
@Mike-hp3fh 3 жыл бұрын
В svelte все, что есть в React сделано в 100 раз проще. Но приходится учить React, т.к. он есть везде, а о svelte еще мало кто знает.
@westside9145
@westside9145 4 жыл бұрын
Где можно посмотреть характеристики твоего компьютеа, было бы здорово увидеть видео про твоё рабочее место и пространство
@eugenegavrilov2618
@eugenegavrilov2618 4 жыл бұрын
как это поможет с изучением react'a?
@westside9145
@westside9145 4 жыл бұрын
@@eugenegavrilov2618 брат, мир шире чем "изучение реакта"
@eugenegavrilov2618
@eugenegavrilov2618 4 жыл бұрын
@@westside9145 согласен, но ты задал вопрос в коменете, под уроком на рекате)
@samolevich
@samolevich 10 ай бұрын
Так много магии
@michaeldevichenskiy4588
@michaeldevichenskiy4588 3 жыл бұрын
Где у вас учиться , ну или как ?
@abobus_xero
@abobus_xero 3 жыл бұрын
Почему у меня не выполняется функция handleScroll при прокрутке,но с обычным кликом все работает. Все сделано как на видео?
@ПродюссерЛетов
@ПродюссерЛетов 3 жыл бұрын
Привет, прошло 8 месяцев, ты решил проблему?
@abobus_xero
@abobus_xero 3 жыл бұрын
@@ПродюссерЛетов честно уже не помню, гуглил и понял почему, но на данный момент с этим не было проблем больше
@ПродюссерЛетов
@ПродюссерЛетов 3 жыл бұрын
@@abobus_xero понял, спасибо за своевременный ответ!
@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) вот это забавно
@alexeystaroverov4804
@alexeystaroverov4804 3 жыл бұрын
Scroll всегда неудачный пример там куча нюансов не связных с целевой функцией
@Калабарака
@Калабарака Жыл бұрын
ничего не понятно вообще
@someguy4973
@someguy4973 2 жыл бұрын
"Но это не есть хорошо, мы должны использовать нормальное решение". Далее автор использует "нормальное решение", не объяснив а почему все же "это не есть хорошо", потому что видимо сам не разобрался в этом вопросе.
@harrisonwinston2850
@harrisonwinston2850 2 жыл бұрын
а что тут разбираться? React рекомендует работать со своими инструментами, не используя DOM-манипуляции напрямую, чтобы не конфликтов с ним.
@Liver_Room
@Liver_Room 5 ай бұрын
видео явно для полных нулей ато обясняют так будто мы обезяны безмозглые
@frontman6849
@frontman6849 4 жыл бұрын
ну почему? ну почему белая тема?
@adam-front
@adam-front 2 жыл бұрын
Ночью надо спать!
@amelianceskymusic
@amelianceskymusic 2 жыл бұрын
Согласен, жесть
@localhost666
@localhost666 Жыл бұрын
Наоборот отлично, не режет глаза при переходе от IDE в браузер
@snakevenom8039
@snakevenom8039 Жыл бұрын
иди наҩӱйӣ😅
@frontman6849
@frontman6849 Жыл бұрын
@@snakevenom8039 неа
@oleksiimishchenko5827
@oleksiimishchenko5827 Жыл бұрын
Мало того, что все доходчиво и в деталях объяснил, так еще и грамотной речью и с четкой дикцией! Я в восторге от автора!
@strel9
@strel9 4 жыл бұрын
сделай видос собеса на Джуна на Реакт, может одного или нескольких подписчиков (или как вариант вакансию на HH разместить), думаю будет популярный видос
@-web2378
@-web2378 4 жыл бұрын
Думаю нет
@ultraduck100
@ultraduck100 4 жыл бұрын
@@-web2378 ну да, все же сразу на мидла или сеньера идут
@-web2378
@-web2378 4 жыл бұрын
Ruslan Nagiev тут не в этом дело. Либо ты идёшь и проходишь собеседование на джуна, либо ты сидишь и смотришь видос на ютубе. Если человек хочет найти работу, в частности джуна, то он берет и идёт и ползёт на собеседование. А у вас получается другой подход, который называется «Сижу смотрю видос про собеседование джуном, но на джуна не пойду ещё года два» . И чем больше вы ждёте такой ролик, тем больше вероятность того, что вы будете джуном, который так и не пойдёт на собеседование, но будет с удовольствием переносить все тяготы и невзгоды через другого, точнее через того, который видос этот снимет. Вот и вывод, что вам легче посмотреть видос по собеседованию часа на два, чем сходить и самому пройти эти собеседования.
@strel9
@strel9 4 жыл бұрын
Нукат - web так то же самое и про мидла сказал можно😂 про любое собеседование😂
@ultraduck100
@ultraduck100 4 жыл бұрын
@@-web2378 да, это логично и я с вами согласен, НО речь то шла о популярности такого видео) я думаю, каждый (или большенство) хоть раз да и пытался найти такой формат видео. так что автору довольно выгодно должно быть в плане просмотров. я уверен, что самые популярные видео на этом канале именно собесы. это можно легко проверить
@YevhenHromov
@YevhenHromov 11 ай бұрын
Спасибо огромное за урок! По мере прохождения появился вопрос) Если запустить таймер несколько раз подряд, создадутся разные ссылки (разные айди таймеров), и остановить уже просто по первой ссылке все таймеры не выйдет. Как обойти эту проблему? можно ли иметь доступ к каждой новой созданной ссылке поочерёдно или нужно как-то избегать пересоздания новых ссылок. Пока писал, понял, что ответ где-то в районе меморизации или useCallback'a)
@AmirLT-x6y
@AmirLT-x6y 10 ай бұрын
Thaks. All iš very clear. No questions. It is the best video about useEffect🎉🎉🎉🎉🎉🎉🎉🎉
@cradleofkaschenko2057
@cradleofkaschenko2057 3 жыл бұрын
Про сам хук начинается с 12:00. Революционный подход!
@ВладимирГугин-ш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
@АрчибальтГугенов
@АрчибальтГугенов Жыл бұрын
очень запутанный пример
@ВладиславМаслов-л7ж
@ВладиславМаслов-л7ж 4 жыл бұрын
Супер полезное видео, спасибо за труд!
@AleksandrKovalchuk-z8m
@AleksandrKovalchuk-z8m 4 жыл бұрын
Привет. Спасибо за отличный материал!
@СеитханРискельдиев
@СеитханРискельдиев 3 жыл бұрын
Супер. Круто объясняешь. Продолжай
@challengetolearnenglishfor9823
@challengetolearnenglishfor9823 4 ай бұрын
Thank you very much
@alexandrzhuykov7355
@alexandrzhuykov7355 2 жыл бұрын
Самое крутое объяснение этого хука!!! СПАСИБО!!
@nikitakurochka2752
@nikitakurochka2752 4 жыл бұрын
Очень крутое видео. Долгое время мучали вопросы по этой теме) А тперь все пушка !!
@Poziratelb
@Poziratelb 4 жыл бұрын
Как раз вожусь с ними. Дают много возможностей
@БауржанКадискалиев
@БауржанКадискалиев 4 жыл бұрын
Спасибо большое за подробный материал
@ruslankarimov6490
@ruslankarimov6490 Жыл бұрын
спасибо!!!
@МасияГусейнов-ъ5е
@МасияГусейнов-ъ5е 3 жыл бұрын
Будь здоров ! Спасибо !
@alexsedmoy2200
@alexsedmoy2200 Жыл бұрын
👍👍👍
@Mike-hp3fh
@Mike-hp3fh 3 жыл бұрын
Госспади какой же ужас этот React
@petrmurashko6884
@petrmurashko6884 Жыл бұрын
Где найти шрифт со значком => для VS code?
@ДанилоНовосад-ь7х
@ДанилоНовосад-ь7х 4 жыл бұрын
Спасибо, а как ты сделал плавный курсор в vs code?
@DzhavidR
@DzhavidR 4 жыл бұрын
Зайди в настройки vsCode - в поиске набираешь курсор - и выбираешь Editor cursor blinking: expand
@romankhudovekov5145
@romankhudovekov5145 4 жыл бұрын
Благодарю за полезное видео!
@wittyvillain
@wittyvillain 2 жыл бұрын
Хороший пример! А как сделать чтобы скролл автоматически опускался в конец списка?
@strel9
@strel9 4 жыл бұрын
лукос не глядя, какраз хотел с useRef разобраться
@АлександрСосо-щ1б
@АлександрСосо-щ1б 2 жыл бұрын
Приветствую! Спасибо за урок! только не понятно, может ли быть несколько useRef внутри одной компоненты для выполнения разных задач, или свойство current одно на компоненту?
@ArchakovBlog
@ArchakovBlog 2 жыл бұрын
Если разные задачи, то вполне может
@turalinov
@turalinov Жыл бұрын
Очень понятно, спасибо)
@xmarsianca
@xmarsianca 2 жыл бұрын
Прекрасное объяснение!! Спасибо!
@Mike-hp3fh
@Mike-hp3fh 3 жыл бұрын
Очевидно, что если в компоненте использовать несколько React.useRef и вызывать их в случайном порядке, или просто не в строго определенном порядке, то все полетит к чертям. Новички конечно об этом и не подозревают.
@theBarracuda_
@theBarracuda_ 2 жыл бұрын
Из-за чего?
@Mike-hp3fh
@Mike-hp3fh 2 жыл бұрын
@@theBarracuda_ из-за того что при таком подходе (я имею ввиду возможности JavaScript которые использует React) это единственный способ связать данные с кодом. На каждом вызове useRef увеличивать внутренний счетчик на 1 и брать следующий из объект из внутреннего массива.
@MadBlissOff
@MadBlissOff 3 жыл бұрын
Что за клавиатура? Такой звук клавиш приятный, прям не могу
@bukanaka
@bukanaka 3 жыл бұрын
Может механика с голубыми свичами
@MadBlissOff
@MadBlissOff 3 жыл бұрын
@@bukanaka у голубых свитчей щелчок есть, а тут его нет
#4: React Hooks - useMemo + React.memo
25:38
Archakov Blog
Рет қаралды 71 М.
FORMIK - Создание React формы с валидацией
14:48
Дмитрий Герасимов - о разработке в сфере IT просто
Рет қаралды 13 М.
Inside Out 2: BABY JOY VS SHIN SONIC 3
00:19
AnythingAlexia
Рет қаралды 8 МЛН
Самое неинтересное видео
00:32
Miracle
Рет қаралды 2,9 МЛН
Spongebob ate Patrick 😱 #meme #spongebob #gmod
00:15
Mr. LoLo
Рет қаралды 16 МЛН
#1: React Hooks - useState
27:47
Archakov Blog
Рет қаралды 65 М.
createRef, setRef, useRef и зачем нужен current в ref
12:08
АйТи Синяк
Рет қаралды 29 М.
React 16: Хук useReducer
17:25
Школа web-программирования Constcode
Рет қаралды 8 М.
Never Forget React forwardRef Again
9:33
Coding in Public
Рет қаралды 19 М.
10 React Antipatterns to Avoid - Code This, Not That!
8:55
Fireship
Рет қаралды 748 М.