#4: React Hooks - useMemo + React.memo

Sdílet
Vložit
  • čas přidán 3. 08. 2024
  • 📢 Платный курс по ReactJS с наставником: mentor.archakov.im/landing.html
    ❤️ Поддержка:
    - Patreon: / archakovblog
    - Донаты: www.donationalerts.com/r/arch...
    Советую сначала посмотреть, как работает useEffect, чтобы понять принцип работы хука useMemo.
    📢 О чём я буду рассказывать?
    Я решил сделать новый курс по React-хукам и рассказать подробно о том, как работает каждый хук. В данном видео, я рассказываю о хуке useMemo и о вспомогательной функции (компоненте высшего порядка) - React.memo.
    Видео по остальным хукам:
    - useState: • #1: React Hooks - useS...
    - useEffect: • #2: React Hooks - useE...
    - useRef: • #3: React Hooks - useRef
    ❓ Кому подойдёт этот курс?
    Для начинающих, которые только начали изучать ReactJS и для тех, кто изучает более 3-х месяцев.
    На каждый хук, есть отдельная ветка в репозитории ниже. Просто кликаете по "Branch" и выбираете нужный хук.
    Ссылка на GitHub: github.com/Archakov06/react-h...
    0:00 - Начало
    0:39 - Что такое мемоизация?
    2:34 - Что такое хук useMemo?
    3:42 - Пример приложения с проблемой
    7:45 - Решаем проблему с зависанием приложения с помощью useMemo
    10:50 - Избавляемся от лишнего ререндера с помощью React.memo
    16:41 - Контролируем сами ререндер компонента с помощью своей проверочной функции
    21:10 - Резюмирую
    🔗 Следите за обновлениями и информацией в:
    - Telegram-канале: t.me/archakov_im
    - VK: archakov_im
    - Личном блоге: archakov.im
    - GitHub: github.com/Archakov06
    - Моё резюме: career.habr.com/archakovim

Komentáře • 175

  • @bur5153
    @bur5153 Před 3 lety +124

    Что мы можем сказать исходя из этого видео?
    То, что Archakov красавчик.

  • @Alequez97
    @Alequez97 Před 9 měsíci +7

    Изначально поставленная проблема в первом примере - счётчик 1 работает медленно из-за сложных вычеслений счётчика 2. Сразу возникает вопрос а почему вообще рендеры счётчика 1 зависят от счётчика 2. И ответ находится в компоненте App, который почему-то отвечает за то, чтобы хранить состояние счётчиков. А если счётчиков будет 10? Тут сразу должно бросаться в глаза дублирование кода. Чтобы добавить новый счётчик нам надо написать новый вызов useState и скопировать разметку. Здесь это сделано 2 раза, а если счетчиков будет 10, то сделать это надо будет 10 раз. Соответсвенно и проблема здесь не в том, что не используется мемоизация, а в том, что App занимается тем, что он не должен делать. Каждое изменение будет перерендеривать все счетчики, даже когда изменился только один. Если вынести useState и разметку в отдельный компонент скажем CountContainer, который сам будет хранить состояние своего счётчика и передать через пропсы id и isFiveCheckRequired, то проблема медленного счётчика 1 уходит и без мемоизации. Проблема счётчика 2 с медленным вычеслением остаётся, такое решение пока что еще не закроет это. Но здесь у меня уже вопрос по тому, как разделена логика. Я не знаю как вы, но я обычно разделяю компоненты на те, кто отвечает за представление, логику и загрузку данных или любые другие побочные эффекты. Здесь, в компонент, который отвечает за то, чтобы отобразить разметку, почему-то попала какая-то логика. Если еще раз взглянуть, то этот компонент получает пропс, проверяет 5 ли это и отображает разметку в зависимости от условия. Но это уже детали, допустим вместо while здесь какая-то полезная логика, допустим сетевой запрос. Как мемоизция оптимизирует компонент без стейта и с одним пропсом?
    Если нам нужна мемоизация для того, чтобы оптимизировать другой компонент, который не является самим компонентом или дочерним компонентом, то проблема не в отсуствии мемоизации, а в неправильном разделении логики. Если представить, что вместо while выполняется какая-то логика и она действительно занимает скажем секунду, то в таком случае мы можем только показать красивый лоудер, что происходит вычисление или ожидается ответ сервера. И если это логика зависит от value, то это будет useEffect с зависимостью value, а не useMemo. useMemo в этом примере вообще бесполезен. Он нужен только тогда, если вам нужно оптимизировать рендеры дочерних компонентов, при передачи результатов через пропсы, либо оптимизировать вычисления самого компонента в случае, если он имеет несколько причин, по которым может быть рендер. Пример из реакт документации - у нас есть три пропса, один из них задаёт тему компонента, два других учавствую в каком-то вычислении. В таком случае мы можем обернуть в useMemo эту функцию вычеслений с зависимостью этих двух пропсов и в таком случае, если мы снаружи поменяем тему, то вычесление не будет произведено, а мы просто отобразим значение из кеша с новой темой.
    В общем и целом вы показали как работает мемоизация в реакте, но не когда её применять, как и зачем. Изначальный код был хорошим для того, чтобы показать как делать рефакторинг, разделять логику на компоненты и объяснить почему если компонент может хранить свой стейт, то следует его поместить именно в компонент. В итоге вместо этого плохой код стал еще хуже, потому что при рефакторинге придется убирать мемоизацию и начинать с нормального разделения на компоненты. Вторую часть не буду расписывать, потому что все проблемы оттуда же, что я уже написал и они бы тоже были решены нормальным разделением на компоненты. Если бы мемоизация была бесплатной, то можно было бы хоть везде и всё мемоизировать, но это не так и нужно понимать когда это даст оптимизацию, а когда может наоборот ухудшить производидельность. Не только количество рендеров влияет на производительность

  • @kerimkerimli5490
    @kerimkerimli5490 Před 2 lety +18

    Чисто человеческое Спасибо тебе, настолько прекрасно объяснил всё прям по полочкам разложил, по сути все делают такие видео, но настолько глубоко и в чистом виде не делает ни кто, так что Удачи тебе и Рад всем твоим новым подачам Инфы)))))

  • @lalathealter6513
    @lalathealter6513 Před 2 lety +16

    Шикарное объяснение, большое вам спасибо

  • @elzaizrivii6486
    @elzaizrivii6486 Před 3 lety +36

    Я ждал продолжение реакт хуков уже 10000 лет!

    • @DzhavidR
      @DzhavidR Před 3 lety +3

      я то же самое. и жду юзРедюсер

    • @Max-kr4ie
      @Max-kr4ie Před 3 lety

      Просто "Вы не готовы!" были.

    • @user-yg8nh2ek6w
      @user-yg8nh2ek6w Před 3 lety +2

      За 10 000 лет можно и документацию на английском языке освоить )))

    • @user-sk2dp1ob1n
      @user-sk2dp1ob1n Před 2 lety

      В АЗКАБАНЕ!!!

    • @FilmsMediaTV
      @FilmsMediaTV Před rokem

      @@user-sk2dp1ob1n 🤣🤣

  • @botino-k
    @botino-k Před rokem +1

    Этот канал- находка для меня! Спасибо за труды🤗

  • @user-qj8vt7fy5g
    @user-qj8vt7fy5g Před 2 lety +3

    Настолько понятно объяснить нужно иметь талант. Спасибо!!

  • @iliyabrook2933
    @iliyabrook2933 Před rokem

    Оромное спасибо!, подача информации настолько понятная и прозрачна, с актуальными и граматными примерами!, Респект!

  • @bugaga8144
    @bugaga8144 Před 2 lety

    Очень понятно и доступно объяснили! Перешел на выше видео,так как у другого блогера вообще не понял что к чему и куда, с вашей помощью все встало на полочки

  • @user-ht4es2nw7k
    @user-ht4es2nw7k Před 2 lety +1

    Самое лучшее объяснение useMemo 🔥

  • @duce201
    @duce201 Před 3 lety +3

    спасибо большое за материал!!! все доходчиво и наглядно объяснил.

  • @dmitrykarpovich186
    @dmitrykarpovich186 Před 4 měsíci

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

  • @nodirayakubova6395
    @nodirayakubova6395 Před 3 lety +1

    Классная инфа,спасибо Archakov)

  • @user-rw3ry9bd6l
    @user-rw3ry9bd6l Před 3 lety

    Шикарно объяснил! Кратко, наглядно. Лайк

  • @murcha5899
    @murcha5899 Před 2 lety

    Прекрасное объяснение!!! Благодарствую!!

  • @andrTaylor
    @andrTaylor Před 3 lety +1

    Я дождался! Спасибо! Жду про юз колбэк)

  • @turalinov
    @turalinov Před rokem

    Спасибо за наглядные примеры!

  • @gritsienkooleg3447
    @gritsienkooleg3447 Před rokem +1

    Блин, как же понятно, Антон, спасибо тебе огромнейшееееее!!!

  • @ivanegorov9749
    @ivanegorov9749 Před 2 lety

    Лайки не забываем ставить, отличные видео! все четко и понятно.

  • @olehy5000
    @olehy5000 Před 2 lety

    Спасибо тебе добрый человек! Теперь стало понятно)😀

  • @EvgenyT2011
    @EvgenyT2011 Před 2 lety +1

    Спасибо, это было реально очень полезно.

  • @devorer77
    @devorer77 Před 3 lety +2

    спасибо! писал в телеге и пповтрю тут - по части хуков у тебя самые толковые видео в русском тытубе

  • @1MrGerman
    @1MrGerman Před 2 lety

    Спасибо за отменный урок!

  • @user-eo3nt8bf8y
    @user-eo3nt8bf8y Před 3 lety

    Спасибо , крутая подача материала

  • @bukanaka
    @bukanaka Před 3 lety

    Блин, так доходчиво объясняешь! Даешь гайды на все хуки!

  • @vitaliyyasinskiy3689
    @vitaliyyasinskiy3689 Před 2 lety

    Еще один божественный лайк божественному видео

  • @mesho4ekGovna
    @mesho4ekGovna Před 3 lety +2

    Просто лайк авансом ставлю!

  • @aquilon1790
    @aquilon1790 Před 2 lety

    Спасибо, очень доступно объяснил. Лайк поставил, коммент для продвижения написал, подписку оформил. Успехов!

  • @oleksiik4473
    @oleksiik4473 Před 3 lety

    О, огонь, лайк вперёд! З наступающим!

  • @astkh4381
    @astkh4381 Před rokem +1

    Спасибо,Разобрался.Лайк

  • @benchik100
    @benchik100 Před rokem

    очень качественно и доходчиво!

  • @omarkertis5294
    @omarkertis5294 Před 3 lety +1

    Спасибо. Положу себе под ёлку.

  • @alexmotorniy
    @alexmotorniy Před 3 lety

    спасибо, все очень доходчиво !

  • @mykhailonikolaiev6512

    Хорошее объяснение, спасибо

  • @uzver3787
    @uzver3787 Před 3 lety +1

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

  • @user-qx6gp9ci5d
    @user-qx6gp9ci5d Před 3 lety

    кайфффф!! очень подробное объяснение

  • @FF-gq3hm
    @FF-gq3hm Před rokem +1

    Спасо за видео🍕🍕👨‍💻👨‍💻

  • @galievramil1169
    @galievramil1169 Před 2 lety

    Красавец, шикарный пример!

  • @KuBa-tkm
    @KuBa-tkm Před 3 lety +3

    Чувак СПАСИБО!!!! Я ЖДАЛ! ААААААААААААА

  • @artsiomwithoutme8753
    @artsiomwithoutme8753 Před 3 lety

    Благодарю за видео

  • @FilmsMediaTV
    @FilmsMediaTV Před rokem

    Раскидал именно все по полочкам)

  • @unknown.6914
    @unknown.6914 Před 7 měsíci

    отличное объяснение , спасибо !

  • @AlexSizovRun
    @AlexSizovRun Před 2 lety

    Супер видео, спасибо

  • @jobsearchfordancer4372

    Хорошее видео по useMemo и React.memo

  • @azad0808
    @azad0808 Před 3 lety

    Чел, ты объясняешь реально очень хорошо, доходчиво, и примеры идеальные! Где продолжения??

  • @GPTalksZone
    @GPTalksZone Před 3 lety

    Топ!!! Объяснил как родному сыну!

  • @MarinYehor
    @MarinYehor Před 3 lety +1

    @Archakov Blog, всплывающие названия материала в иконке посередине на милисекенду замечательны! Усваивается лучше материал от того, что мозг удивлен подачей мощнейшей (React.memo, React.useMemo)

  • @vseslavr
    @vseslavr Před 3 lety +6

    Лайк не глядя

  • @user-ht4nb4zw9g
    @user-ht4nb4zw9g Před rokem

    спасибо за труд!

  • @nikko374
    @nikko374 Před 3 lety

    Огонь видео!!!

  • @maksrygaev657
    @maksrygaev657 Před 2 lety

    спасибо лучшее обьяснение

  • @romanprokopets3693
    @romanprokopets3693 Před 3 lety

    крутое обьяснение, спасибо

  • @paul.inglsmit
    @paul.inglsmit Před 3 lety

    Лайк не глядя)

  • @alexey9404
    @alexey9404 Před 2 lety

    Обнови железо! Ничего зависать не будет. Шучу хороший видосик, спасибо!

  • @lollolich2399
    @lollolich2399 Před 2 lety

    очень мегахорош, лайк!

  • @user-rk1nn9xi7o
    @user-rk1nn9xi7o Před 8 měsíci

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

  • @user-ml8hn5kg9e
    @user-ml8hn5kg9e Před 2 lety

    Супер видео

  • @aiylchiievjs6207
    @aiylchiievjs6207 Před 2 lety

    спасибо больщое вам!

  • @user-ib3cx2rn8q
    @user-ib3cx2rn8q Před 3 lety +2

    Годно!

  • @bzlkch
    @bzlkch Před 3 lety +1

    Спасибо!

  • @AmirKadenov
    @AmirKadenov Před 2 lety

    Благодарю!

  • @NoName-hs4qp
    @NoName-hs4qp Před 2 lety

    Царек. Уважаю!

  • @vladimirww5152
    @vladimirww5152 Před 3 lety

    Полезно!

  • @Cindorqw
    @Cindorqw Před 3 lety

    вот он настоящий контент для миддлов

  • @__xid__
    @__xid__ Před 3 lety +18

    Чуть недокрутил, чтобы "Это пять!" показывалось только если счетчик === 5. Надо бы "if (prevProps.value === 5 || nextProps.value === 5) { return false }"

    • @Litlpip
      @Litlpip Před 3 lety

      А почему не хватит только nextProps?

    • @__xid__
      @__xid__ Před 3 lety +2

      @@Litlpip Ну так потому что показывается "Это пять!", когда счетчик больше 5.

    • @ArchakovBlog
      @ArchakovBlog  Před 3 lety

      А зачем компоненту делать 2 раза ререндер? Наша задача была показать "Это пять" только 1 раз, но в твоём случае, компонент будет делать ререндер 2 раза.

    • @andTutin
      @andTutin Před 2 lety +5

      @@ArchakovBlog может потому что "12 это 5" выглядит туповато

    • @user-ti6og5so1w
      @user-ti6og5so1w Před rokem

      Но получается prevProps равен 4, а следПропс равен 5

  • @user-mi7se3il3x
    @user-mi7se3il3x Před 3 lety

    Лучший!!!

  • @alexforos5425
    @alexforos5425 Před rokem

    Спасибо! 👍👍👍

  • @user-rg8wz2rt9e
    @user-rg8wz2rt9e Před 3 lety

    Класс!

  • @user-so1bu9cw5g
    @user-so1bu9cw5g Před 2 lety

    Благодарю

  • @vaich1738
    @vaich1738 Před 2 lety

    Спасибо

  • @hoops_quotes_shorts
    @hoops_quotes_shorts Před 3 lety

    Пушка!

  • @aleksandrgradov7859
    @aleksandrgradov7859 Před 2 lety

    спасибо!

  • @from_brest2631
    @from_brest2631 Před 2 lety

    Ну красавец, больше нечего сказать.. Раздербанил, разжувал ив рот положил :)

  • @user-rq5uy9ml6s
    @user-rq5uy9ml6s Před 2 lety +4

    есть ошибка, 6 !== 5 хотя isFive будет говорить обратное после написания "shoulComponentUpdate"
    надо вот так =) (prev, next) => !(prev === 5 || next === 5)

    • @user-rq5uy9ml6s
      @user-rq5uy9ml6s Před 2 lety

      ну а так все объяснил отлично! like

  • @yevgeniy-ten3482
    @yevgeniy-ten3482 Před 3 lety

    Классно

  • @tarieltitirashvili2257

    круто сделай и на класовых компонентах

  • @Litlpip
    @Litlpip Před 3 lety +29

    Отличное видео, но есть такой резонный вопрос: почему тогда не стоит все подряд оборачивать в useMemo и Memo, и если в самом деле не стоит то почему?

    • @dzhabulya
      @dzhabulya Před 3 lety +18

      Потому что мемоизация не бесплатная операция. Тот же Массив зависимостей который ты передаёшь, js тратит время на его создание. useMemo как и memo позволяет оптимизировать производительность, уменьшая количество ненужных перерасчётов и ререндеров. Но бывают такие ситуации когда ререндер стоит дешевле чем мемоизация. Ведь тот же memo будет каждый раз проходить по всем пропсам и смотреть изменились ли они преждем чем произвести ререндер. Поэтому оптимизация нужна только когда в ней есть необходимость.

    • @user-tt3bc7yk8r
      @user-tt3bc7yk8r Před 3 lety +2

      @@dzhabulya как тогда понять когда использовать, а когда нет?)

    • @dzhabulya
      @dzhabulya Před 3 lety +2

      @@user-tt3bc7yk8r замерять производительность ) Если ты видишь что твоё приложение тормозит, стоит проводить оптимизацию

    • @mayer9228
      @mayer9228 Před 3 lety +9

      Ответ на этот вопрос достаточно банален. Если даже не брать во внимание то, что хуки сказываются на производительности, то любая оптимизация приложения без видимых на то причин - трата времени. Время - деньги, и любые вопросы с производительностью нужно решать только по мере их возникновения.

  • @user-ri9io9vp3i
    @user-ri9io9vp3i Před rokem

    🔥🔥🔥🔥🔥🔥🔥

  • @ilyafreer
    @ilyafreer Před rokem

    Удивительно сколько костылей в реакте. Зачем он вообще нужен. А за видос спасибо!

  • @basmong
    @basmong Před 10 měsíci

    Отличное видео. Хотел бы уточнить, получается что в компоненте isFive, после добавления React.memo мы можем избавиться от хука useMemo внутри компонента(который присваивали к getResult)?

  • @kvashenka3716
    @kvashenka3716 Před 3 lety

    Подскажи пожалуйста, что за тема на VS Code у тебя стоит, уж очень понравилась)

  • @egorlazuka8211
    @egorlazuka8211 Před 3 lety +4

    Спасибо. Про React.memo вообще отлично рассказал. Но почему не рассказал почему все компонтенты/функции не оборачивать.

    • @ArchakovBlog
      @ArchakovBlog  Před 3 lety +6

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

    • @thebestmusicforever1
      @thebestmusicforever1 Před 3 lety

      @@ArchakovBlog ждём видео с useCallback, те хуки которые я смог выучить это те, про которые ты рассказывал

    • @promotezor
      @promotezor Před 3 lety +4

      @@ArchakovBlog вот согласен, намного проще воспринимается информация, когда объясняешь где лучше НЕ делать подобное.
      Кстати, если еще будешь приводить примеры в "боевых" условиях, тогда лучше уроков вообще не придумаешь. Не обязательно показывать код "боевых" проектов, достаточно упомянуть абстракцию! Попробуй пожалуйста, может сделай голосование, зашло людям или нет, оживляй аудиторию!)
      Мне к примеру совсем непонятно в каких случаях можно НЕ юзать useState, как различать такие вещи... Поэтому я чувствую себя неуверенно.
      Спасибо за видео!)

  • @avmru
    @avmru Před 3 lety +1

    Спасибо тебе, добрый человек, за вторую функцию в React.memo! Мне только одно не понятно - почему все другие это скрывают?

    • @ArchakovBlog
      @ArchakovBlog  Před 3 lety +1

      Ее практически не юзают, только в очередь редких исключениях. Например, когда нужно проверить конкретные свойства, а не соответствие всех пропсов

    • @avmru
      @avmru Před 3 lety

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

    • @avmru
      @avmru Před 3 lety +3

      @@ArchakovBlog и ещё надо сказать, что да, я согласен с людьми, которые хвалят Вашу подачу материала. до Вашего урока я посмотрел несколько уроков про хуки. все рассказывают и показывают, вроде, всё что нужно. и, вроде, как бы действительно не сложно. но так до конца и не понял. и только после того, как Вы показали в подробностях, КАК ЭТО РАБОТАЕТ, у меня в башке всё встало на свои места.

  • @user-vw7ec8ow3t
    @user-vw7ec8ow3t Před rokem

    Если в IsFive убрать useMemo но оставить React.memo то ничего не меняется в результате, получается что при использовании React.memo в конкретном данном примере useMemo становится бесполезен ?

  • @dav1d05
    @dav1d05 Před rokem

    Так получается что useMemo в компоненте isFive уже не нужен, так как проверка пропсов выполняется раньше с помощью memo

  • @thimerlanmatyakubov8940

    PASIBAA BRAT OCHEN KRUTEAAAAA

  • @DagestanShop
    @DagestanShop Před 4 dny

    а нельзя просто в самом компоненте сделать
    {value === 5 && } ?

  • @tlegenbayangali
    @tlegenbayangali Před 7 měsíci +1

    А как перерендерить IsFive, если счетчик, например, равен 6?

  • @user-ew2il4go4q
    @user-ew2il4go4q Před rokem +1

    React.memo со своим условием проверки это хорошо, вот только компонент IsFive не меняется обратно после того, как мы перевалили за 5, при 18 он так же будет показывать "Это пять" )))
    Что можно сделать в этой ситуации?

    • @darnelo7606
      @darnelo7606 Před rokem

      Первая идея - рендерить также, когда nextProps.value === 6

  • @AKucenko
    @AKucenko Před 2 lety +3

    Попробовал отследить ререндеры в проекте пицца.
    К примеру в компоненте ререндер происходит один раз при обновлении страницы и далее по два раза каждое нажатие на категорию, т.е был 1, стал 3, далее, 5 (при выборе категории)...
    Компонент рендерится аж 19 раз при обновлении страницы, но сам console.warn выскакивает 10 раз. Если же выбрать категорию, то будет 11 console.warn'ов и значение переменной renderCount будет равно 41.
    Возможно, я что-то не так делаю, но все по аналогии. Хотелось бы понять, почему так? Весь курс пиццы переписан 1 в 1.

    • @artemrudenko8234
      @artemrudenko8234 Před 2 lety +1

      в index.js нужно убрать React.StrictMode, этот режим вызывает рендер два раза, но только в дев моде

    • @AKucenko
      @AKucenko Před 2 lety

      @@artemrudenko8234 ого, спасибо!

  • @vitalimalyshkin282
    @vitalimalyshkin282 Před 2 lety +1

    Всем привет! Кто знает, почему счетчик в варнинге увеличивается на +2, а не на +1 как у автора? т.е. был 0 при инициализации, потом в варнинге он становится 1, а при перерендере до следующего варнинга, если законсолить пишет уже 2) соответственно в варнинге выводится уже 3) никак не могу понять почему так происходит)

    • @artemrudenko8234
      @artemrudenko8234 Před 2 lety

      в index.js нужно убрать React.StrictMode, этот режим вызывает рендер два раза, но только в дев моде

  • @whiteguards43
    @whiteguards43 Před 2 lety

    8:55 возвращает результат выполнения функции, которую указали в пером фекаргументе,
    А юзЭффект так не делает?

  • @I_am_a_programmer
    @I_am_a_programmer Před 6 měsíci +1

    Можете пожалуйста сказать почему все функции из коробки не попадают в React.memo(). Мне кажется, так было бы меньше перерисовок. Или может это как-то можно включить в настройках?

    • @front-cat
      @front-cat Před 4 měsíci +1

      Кажется скоро планируется обнова реакта, где из коробки как раз все будет запускаться с memo

  • @user-lk4mb3nw3d
    @user-lk4mb3nw3d Před 2 lety +2

    Вопрос , а нужен ли уже там useMemo внутри если мы обернули всю компоненту в memo ?

    • @urek8988
      @urek8988 Před 2 lety

      useMemo, для функций, react.memo для компонента.

    • @urek8988
      @urek8988 Před 2 lety

      Если ты хочешь чтобы у тебя функция не пересчитывалась, то нужно юзать useMemo, даже если компонента обернута в memo. Это все зависит от ситуации, у тебя например могут обновиться пропсы и компонента перерендарится, но какое-то значение из пропсов указанное в зависимость useMemo не изменится и тогда мемоизированная функция не будет производить перерасчеты..

  • @user-yv9fv6rc2d
    @user-yv9fv6rc2d Před 4 měsíci

    Арчаков, а где курсы?

  • @petrvictorovich
    @petrvictorovich Před 2 lety

    Тэээк... Я тут непонял - с чем мы изначально боремся?
    Почему тяжёлая функция из нижнего счётчика вообще выполняется, когда мы нажимаем верхний счётчик?
    Потому-что оба счётчика в одном компоненте и всё целиком каждый раз перерендеривается - так что-ли?

  • @user-yg8nh2ek6w
    @user-yg8nh2ek6w Před 3 lety

    У меня почему то при каждом рендере счетчик (в консоли который смотрим) аккурат на 2 увеличивается) че за хрень может быть? код с гитхаба скачал

  • @user-rz1hy7xg7o
    @user-rz1hy7xg7o Před 2 lety

    Возможно глупый вопрос, но как лучше совместить с Redux?

  • @user-gz4qu1bp2f
    @user-gz4qu1bp2f Před 3 lety

    Здравствуйте. А будут ли уроки по mobx?

    • @ArchakovBlog
      @ArchakovBlog  Před 3 lety

      Привет! В ближайшее время не будет

  • @nightraven1043
    @nightraven1043 Před 2 lety

    просто о сложном