Не делай такое с useState! Топ 5 ошибок junior React-разработчика

Поделиться
HTML-код
  • Опубликовано: 26 дек 2024

Комментарии • 172

  • @serjmarkelov9915
    @serjmarkelov9915 2 года назад +21

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

    • @ТёмаКоролёв-к6ф
      @ТёмаКоролёв-к6ф 2 года назад +4

      мне кажется ты просто плохо ищешь)) Многие штуки он берет как раз из зарубежного ютуба.

    • @connectw
      @connectw Год назад

      @@ТёмаКоролёв-к6ф Привет. Можешь порекомендовать зарубежных ютуберов по реакту?

    • @TonyPony7
      @TonyPony7 Год назад

      нигде не обходится без льстецов!

  • @GroundGamer
    @GroundGamer 2 года назад +75

    Если объяснить весь ролик коротко, то вот:
    1. Хочешь предыдущее значение ? Используй callback функцию с аргументом в виде предыдущего значения
    2. Не хочешь ошибок в "пустом" useState ? Ставь default случай
    3. Данные обновляются ? Используй useState
    4. Манипуляция над списками:
    4.1.Хочешь обновить список ? Делай так: setState(...state, newState)
    4.2. Хочешь удалить из списка элемент ? Делай так:
    4.2.1. const cloneTasks = [...tasks]
    4.2.2. cloneTasks.splice(${нужный индекс задачи}, 1)
    4.2.3. setState(...state, cloneTasks)
    4.3. Хочешь изменить элемент списка ? Делай так:
    4.3.1. const formedTasks = tasks.map(task, i => { if (i === 1) { return { text: 'newText' } }} return task)
    4.3.2. setState(...state, formedTasks)
    Получается топ 4?))

    • @kawaikaino5277
      @kawaikaino5277 2 года назад +1

      а почему именно splice, а не скажем .filter ? )

    • @GroundGamer
      @GroundGamer 2 года назад +1

      @@kawaikaino5277 я лично выбрал splice, чтобы проще делать отладку, в случае чего-то. Кнч, можно сделать что-то такое:
      1. const formedTasks = state.filter(...)
      2. return formedTasks
      Но также, в splice ты можешь начать с индекса таски, которую тебе нужно удалить, а не идти по целому списку. Как бы да, ты используешь проход по массиву, так как и filter, но в конкретном случае, как я понимаю, splice начинает с определённого индекса массива и затем уже делает те действия, которые нам нужны. По поводу "проход по массиву", я начал разъяснять так, как примерно работает под капотом
      Если в чём-то не прав, поправьте меня пожалуйста))

    • @kawaikaino5277
      @kawaikaino5277 2 года назад

      ​@@GroundGamer По поводу, прохода по всему массиву, при использовании filter.
      а. В большинстве случаев, это экономия на муравьях, т.к чаще всего не приходится работать с длинными массивами
      б. Ну уж, если пришлось обработать длинный, на сколько мне известно движок под капотом оптимизирует выполнение filter (но это не точно)
      Спасибо за ответ

    • @lirrr6555
      @lirrr6555 2 года назад +1

      @@GroundGamer зачем здесь переменная formedTasks? filter иммутабелен, можно сразу делать return state.filter(...)

    • @GroundGamer
      @GroundGamer 2 года назад

      @@lirrr6555 Можно, конечно. В целом, хоть однострочные решения и "красивы", но иногда, они сложны для отладки, допустим когда у нас в фильтре (или ещё в каком либо методе массива), содержится ещё один массив по которому нам нужно пройтись, и вся их "красота" перестаёт быть "красотой" и превращается в "чудовище", которое ещё бывает сложно прочитать разрабу. Поэтому, я выбрал для себя такое написание переменных, как за основу

  • @user-sq3jy1cx8x
    @user-sq3jy1cx8x Месяц назад

    Как намучился с этим счетчиком, пытаясь сделать все самому. Даже GPT мучал, посмотрев этот видос, наконец догнал. Спасибо за подробное и понятное пояснение.

  • @ArtDen100
    @ArtDen100 Год назад +3

    Ты невероятно круто объясняешь!!! Запиши видео по всем основным хукам, это будет супер

  • @rustamakhmetyanov4404
    @rustamakhmetyanov4404 2 года назад +6

    Спасибо за работу, любое обучающее видео от вас интересно, тем более такого формата. Интересен ещё useEffect с его побочками и проблемами.

  • @ВладОся-з7ь
    @ВладОся-з7ь 5 месяцев назад +1

    обезательно нужно , получаю удовольсвия понимая то что раньше не знал

  • @T800Cyberdine
    @T800Cyberdine 2 года назад +9

    Очень полезный видос! Жалко что не посмотрел его пару недель назад, сэкономил бы кучу своего времени. (к решению пришел сам, перепробовав кучу вариантов и вникнув в суть самой проблемы мутации массивов. Но времени затратил на это немеряно.)

    • @ArchakovBlog
      @ArchakovBlog  2 года назад +5

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

    • @AmericanDragon134
      @AmericanDragon134 Год назад

      @@ArchakovBlog а какая у тебя клавиатура?

  • @ИгорьНово
    @ИгорьНово 2 года назад +1

    Супер спасибо!!! Если так разберать все топовые хуки, то будет агонь, агнинский!!!

  • @abikideas
    @abikideas Год назад

    Ухты, спасибо большое. Столько времени сидел и не понимал, почему меняю state объекта, а ничего не рендерится. Как больно быть новичком в чем-то )

  • @daniil__kryuchkov
    @daniil__kryuchkov Год назад

    это ровно то что я искал! жаль что только один хук был описан, жду еще подобных видео, лайк, подписка

  • @vladfolk2418
    @vladfolk2418 8 месяцев назад

    Спасибо большое, благодаря данному видео я теперь не допускаю подобных ошибок!🙏

  • @Sergey-vh3vj
    @Sergey-vh3vj Год назад

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

  • @stellarlay517
    @stellarlay517 11 месяцев назад

    Начиная с 10-й минуты, по поводу undefined в users: как-то немного замудренно объяснял) Просто должно быть понимание, что useEffect отрабатывает только ПОСЛЕ рендера компонента. Поэтому и undefined, потому что при рендере useEffect ещё не отработал, а начнет свое выполнение только после отрисовки разметки и уже тогда из-за setUsers произойдет ре-рендер и мы увидим наших пользователей.
    То есть людям нужно донести именно базовое понимание того, почему мы undefined сначала получаем, иначе никто так и не поймет ничего
    А так за видос респект, прошел по основным "грубым" ошибкам!:)

    • @2Extremum
      @2Extremum 10 месяцев назад

      Для понимания надо сначала на этом же канале посмотреть очень понятное видео о useEffect

  • @alexanderkomanov4151
    @alexanderkomanov4151 2 года назад +2

    Классно!
    Хотелось бы про useEffect как продолжение ну и про остальные тоже. 😀

  • @Zubairavvv
    @Zubairavvv 2 года назад

    Пишу лайк, ставлю комментарий и показываю что мне интересно )

  • @nafisgarifullin7199
    @nafisgarifullin7199 Год назад

    Очень все понятно и доступно, спасибо тебе за такой классный материал 👍 Таких очень мало, кто может объяснить так доходчиво и просто

  • @unknown.6914
    @unknown.6914 Год назад

    Как для начинающего разработчика, очень полезное видео, Спасибо !

  • @БауржанКадискалиев

    Спасибо большое за такие видео. Просто не представляешь как твой мини-урок помог мне с задачей. Могу скрин потом выслать))) захотелось даже статью а блоге написать)

  • @hello-gq4yi
    @hello-gq4yi 2 года назад +2

    Лайк поставлен , комментарий соответственно 🌚🫡

  • @jimsaharov
    @jimsaharov 2 года назад

    Спасибо за урок! Очень грамотно объясняете материал и к тому же в таких тонкостях. Для меня как новичка - это просто бесценная информация! Успехов Вам!

  • @VolodymyrSirenko
    @VolodymyrSirenko 2 года назад

    Очень полезное видео, спасибо! Я, как начинающий , не все смог переварить,. но от половины видео есть реальная польза! :)

  • @dmitriykarabasov1440
    @dmitriykarabasov1440 Год назад

    Отличный контент! Продолжайте, мы ждём!

  • @Soap9613
    @Soap9613 2 года назад

    Очень интересно даже того, кто не знает реакт, но знает js! Давай ещё!))

  • @Вадим777-б9я
    @Вадим777-б9я 2 года назад +1

    Огромная благодарность за такое видео про особенности useState! Будем ждать про другие хуки в том же формате!

  • @yauheniramankou5491
    @yauheniramankou5491 2 года назад +2

    Спасибо, полезная информация, как и сама рубрика разбора типичных и не только ошибок)

  • @Мария-ц8ъ2е
    @Мария-ц8ъ2е 2 года назад

    Плакать от счастья хочется. Очень актуально🥲Спасибо огромное❤❤❤❤❤

  • @murrmax1466
    @murrmax1466 Год назад

    спасибо большое! Вот тебе комментарий, хотелось бы больше таких видео по реакту!

  • @galichandreyschool
    @galichandreyschool Год назад

    Замечательный видеоролик! Благодарю за Ваш труд! Успехов! 😊👍

  • @vansowboy
    @vansowboy 2 года назад

    Отличный ролик, полезная инфа!) Ждем еще

  • @andreyh6934
    @andreyh6934 Год назад

    Спасибо! очень классно объясняешь! Продолжай в том же духе и будет зашибись. ))

  • @kspshnik
    @kspshnik Год назад

    Доброе утро! Про useLayoutEffect() было бы суперкруто :)

  • @ДенисАгейчев
    @ДенисАгейчев 2 года назад

    Все что ты делаешь, все интересно. Продолжай в том же духе!

  • @LavandaKicK
    @LavandaKicK Год назад +2

    Благодарю за видео и вообще контент, очень полезный! Лично мне было бы интересно посмотреть как писать CSR приложение на React, с db на postgres, sequelize-cli, сервер на express, webpack, регистрация-авторизация на JWT(c access token и refresh token), bcrypt, модалки, мультеры(загрузка-выгрузка файлов) и конечно как писать endpoints api и render на бек, всё связывать и защищать. Мне думается что задача сложна для начинающего фулстека, поднять сервак, и на хуках параллельно связывать фронт и бэк. Книжный клуб например. А вообще хотел узнать что за тема в VSCODE??? =))))

  • @kentavr16
    @kentavr16 2 года назад

    Хорошее обобщающее видео. Думаю будет интересно увидеть нечто подобное о пропсах.

  • @maronwilsons
    @maronwilsons Год назад +2

    Денис ждем новый интенсив по Next.js + TypeScript, оч хотим((

  • @Елена-б6в3ж
    @Елена-б6в3ж Год назад

    Спасибо. Стала понятна 2 глава документации React

  • @roshin-1
    @roshin-1 Год назад

    Спасибо большое! Теперь я понял как это работает)

  • @АлександрСосо-щ1б
    @АлександрСосо-щ1б 2 года назад

    уже заждались новые видео!

  • @НиколайОхотников-ф9х

    Интересно! Давай еще! Спасибо!)

  • @Imperfectwow
    @Imperfectwow Год назад

    Классный ролик, много для себя подчеркнул.

  • @ИванФамилия-ю5и
    @ИванФамилия-ю5и Год назад

    Продолжай!Спасибо тебе за объяснения!

  • @YuliyaAnts
    @YuliyaAnts 2 года назад

    Очень интересно! Буду ждать видео и для других хуков :)

  • @ihor7307
    @ihor7307 2 года назад

    Круто. Давай про другие хуки. С более конкретными примерами использование

  • @Oleg_Artemov
    @Oleg_Artemov 2 года назад

    очень интересно!
    расскажи пожалуйста про использование хука useLayoutEffect

  • @andreikrashas7155
    @andreikrashas7155 2 года назад

    Как всегда красавчик, всё по полочкам!

  • @ivankprod
    @ivankprod Год назад

    Неплохие советы) Лайк!

  • @РусланБогданов-ы8е
    @РусланБогданов-ы8е 2 года назад

    Топ тема, делай больше таких видео, я как раз изучаю реакт, и был вопрос как лучше все это использовать нельзя же все хуки использовать на абум

  • @ИгорьБабиков-б6щ
    @ИгорьБабиков-б6щ 2 года назад +1

    Привет) спасибо за видео! а когда будет про (не используй везде useCallback и memo) ?

  • @dmitrylem7703
    @dmitrylem7703 Год назад

    Хочу больше роликов про best practices

  • @javascriptov
    @javascriptov 2 года назад +2

    Гоу видос про useCallback | useMemo

  • @____Olga__
    @____Olga__ 2 года назад +3

    Расскажи по возможности, пожалуйста про все костыли useCallback() & useEffect()

  • @АндрейПоляков-е5н
    @АндрейПоляков-е5н 2 года назад

    Очень очень классный ролик. Да и вообще канал крутой. Спасибо за Реакт-пиццу

  • @Айбек-г3е
    @Айбек-г3е 2 года назад +2

    Гоу видосы про useForm и про валидацию

  • @black_light
    @black_light 5 месяцев назад

    Спасибо. Помог решить проблему.

  • @-rk
    @-rk 2 года назад

    Арчаков, большое спасибо!

  • @yoerh
    @yoerh 2 года назад +1

    Ждём видео об остальных хуках

  • @saperovtop
    @saperovtop Год назад

    Огонь! 🔥

  • @АндрейРосовский

    Ролик и интересный и полезный! Сделай пожалуйста по остальным хукам!

  • @Алексей-о3т1щ
    @Алексей-о3т1щ Год назад

    действительно полезное видео. спасибо

  • @SeverHolod
    @SeverHolod 2 года назад

    Будут ли еще видео по React Native? Жду с нетерпением

  • @MaximSeleznev
    @MaximSeleznev 11 месяцев назад

    Очень круто! Спасибо!

  • @slavikvasin9095
    @slavikvasin9095 2 года назад +2

    юзколбек и юзмемо ошибки ждем) и хотелось бы больше по тулкиту инфы и парочку мнений на счет актуальности стека через обычный редакс и классы, не приведет ли это к потери актуальности на рынке через пару лет такой работы, при активном развитии тулкита и функциональных комп.
    есть ли смысл ломать голову в коде на классах в 23-24 годах?
    так же хотелось бы услышать мнение о TS, очень многие его нахваливают, но я слышал мнение от очень крутых разрабов, что тс нужен только если ты изначально пишешь хреновый код ибо слабые разрабы хейтят не строгую типизацию, а потом скилапнувшись наоборот восхваляют возможности динамической типизации... как то так

  • @unknownWakeborder
    @unknownWakeborder Год назад

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

  • @tanercoder1915
    @tanercoder1915 2 года назад

    Важно также возвращать cleanup callback из useEffect когда есть любые подписки и счётчики.

  • @Отдайкирку-б7й
    @Отдайкирку-б7й 2 года назад

    Максимально понятно и доходчиво

  • @erzhan225
    @erzhan225 2 года назад

    Да, давай ещё эту рубрику

  • @haibova_irisha
    @haibova_irisha 2 года назад

    Спасибо большое !!! очень крутая подача ) а на boosty ты ессть новый контент ?

    • @ArchakovBlog
      @ArchakovBlog  2 года назад +1

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

    • @haibova_irisha
      @haibova_irisha 2 года назад

      @@ArchakovBlog
      спасибо

  • @mikalai_root
    @mikalai_root 2 года назад +1

    Спасибо за некоторые интересные моменты.
    Маленький вопросик: а почему setInterval не убили в ретерне юзэффекта?

  • @РусланСабитов-и2ь
    @РусланСабитов-и2ь 2 года назад

    Теперь понятно что такое мутация объекта.

  • @arman-6172
    @arman-6172 Год назад

    18:20
    Привет.
    Что думаешь, если всегда использовать в таком виде:
    setTask((tasks) => [...task, text])
    какие плюсы:
    1. Ты всегда работаешь с данными, которые хранит хук
    2. Если нужно будет юзать Memo или в useState хранится объект, который нужно менять от других эффектов, то не нужно будет условный tasks прописывать в зависимости эффектов
    🤔

  • @azizoid
    @azizoid 2 года назад +1

    А почему в примере с тасками вы не работаете с предыдущими значениями как в первом примере?

  • @alekseyberezov8020
    @alekseyberezov8020 2 года назад

    Бро, продолжай пожалуйста!!!

  • @joper3703
    @joper3703 2 года назад

    Да, давай пожалуйста про useMemo и useCallback

  • @АнзорБаматалиев

    В первом случае что нам мешает добавить count в массив зависимости в useEffect?

  • @ryskin82
    @ryskin82 2 года назад

    Хочешь удалить из списка элемент делай просто filter c нужными условиями

  • @lukts7839
    @lukts7839 2 года назад

    Спасибо за видео. Чнм больше хуков, тем лучше.

  • @Albert-pm6uf
    @Albert-pm6uf 2 года назад

    Можете подсказать как сделать такое же плавное перемещение курсора?

  • @deceser8057
    @deceser8057 2 года назад

    Збс, продолжай!

  • @haibova_irisha
    @haibova_irisha 2 года назад

    Привет , ,с Новым годом ! а можно более подробно о мутациях ? Как правильно использовать с redux toolkit , спасибо

  • @samiroutka
    @samiroutka Год назад

    Благодарю, неплохо помог

  • @Boobnovslava
    @Boobnovslava Год назад

    Очень ждем новые видео

  • @НикитаРудаков-з2е
    @НикитаРудаков-з2е 2 года назад

    Отличное видео

  • @serheyjankowsky6899
    @serheyjankowsky6899 2 года назад

    setState(prev=>), вызывает общий стейт у компонента который ты будешь использовать на одной странице , пример : толерантный с 3 значениями которые ты можешь переключать , создаешь несколько элементов на странице , начинаешь переключать , и воля у тебя во всех компонентах меняется значения , хотя ты в других его не менял , так что нужно быть аккуратным

    • @kaze9308
      @kaze9308 Год назад

      так это корректная работа useState ведь. он хранит одно состояние, несмотря на то, что разные компоненты снизу используют его

  • @stanislavsapogov9268
    @stanislavsapogov9268 Год назад

    Спасибо за видео! Скажи, плиз, почему в случае с работой с массивами опять не воспользоваться функцией и не написать setState(prev => [...prev, newTask])?

  • @РусланСабитов-и2ь
    @РусланСабитов-и2ь 2 года назад

    Супер контент !!

  • @slever17
    @slever17 Год назад

    Будут ли новые полные курсы (на несколько видосов)? Если да, то будут ли для premiddle/middle и как скоро?

  • @Grigoren_com
    @Grigoren_com 2 года назад

    спасибо! хорошо всё.

  • @multtanker6365
    @multtanker6365 Год назад

    Когда будет next pizza?)

  • @killd0z3r
    @killd0z3r Год назад

    Подскажите, кто знает как цветовая тема называется? Спасибо тем кто ответит

  • @Santos20004
    @Santos20004 8 месяцев назад

    а в самом первом примере если useEffect то почему не просто посадить count массив для отслеживания? и как так завести интервал и не убить его в return прорисовку count вообще вынести за пределы useEffect?

  • @ЕвгенийШут-о7н
    @ЕвгенийШут-о7н Год назад

    Топи топи интересно же и залипательно

  • @haibova_irisha
    @haibova_irisha 2 года назад

    привет еще раз ! знаю сейчас не луяшое время , но нету ли в планах сделать какой-то малеьний проект используя react , redux , rtk query , ts ? спасибо

  • @proletarian
    @proletarian 2 года назад

    так я опытный оказывается, не знал

  • @vladimirv787
    @vladimirv787 2 года назад

    Спасибо!

  • @raff_m_d6971
    @raff_m_d6971 2 года назад

    Формат отличный

  • @dpoleev
    @dpoleev 2 года назад

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

    • @mikalai_root
      @mikalai_root 2 года назад

      Перерендер родителя из потомка?
      1. Callback функцией, переданной как пропс.
      2. Изменение переменной глобального стэйта приложения ( пример с условным редаксом: в чайлде используешь диспатч и изменяешь переменную, которая используется в родителе.). Наверняка есть ещё какие-нибудь извращённые способы, типо поиска элементов родителя в dom дереве и прямые манипуляции нативным джаваскриптом( всякие append и т.д.)

  • @Daemond15
    @Daemond15 2 года назад

    Спасибо за крутотень

  • @borisenkoff_
    @borisenkoff_ Год назад

    тут видеоролик затащил только Гена Горин в конце )

  • @algum4678
    @algum4678 2 года назад

    Про usememo с использованием react devtools (как проверять лишние отрисовки) пожалуйста расскажи

  • @goqorhovhannisyan2048
    @goqorhovhannisyan2048 Год назад

    Привет Арчаков, пожалуйста, сделайте видео о миксе useContext + useReducer в качестве замены Redux-а.