ความคิดเห็น •

  • @yuripolyantsev4876
    @yuripolyantsev4876 ปีที่แล้ว +40

    "Возможно, самая распространенная ошибка умного инженера - оптимизировать то, чего не должно существовать" - Илон Маск

    • @alexandrcorbin1709
      @alexandrcorbin1709 ปีที่แล้ว

      Это не умный инженер, а макака, которая не читает документацию и не интересуется как работает та или иная вещь, которой он пользуется. Просто фронтенд для домохозяек и васянов.

  • @aeron_rus
    @aeron_rus ปีที่แล้ว +5

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

  • @dimaxMedia
    @dimaxMedia ปีที่แล้ว +9

    Почему так редко видео выходят, у тебя подача просто огонь, мозг прям сам запоминает твою информацию, обращение типо "ты понял" мне заходит сразу)) Хочется больше видео как минимум часовых и более

  • @user-uo7tg9tk3j
    @user-uo7tg9tk3j ปีที่แล้ว

    Коммент для развития канала и персональной благодарности Дэну! Лайк - авансом.

  • @joky790
    @joky790 ปีที่แล้ว +1

    Спасибо! Ты очень здорово объясняешь!

  • @eugeneweber4282
    @eugeneweber4282 ปีที่แล้ว

    Очень доступно, спасибо!

  • @RamaRama-qv3jo
    @RamaRama-qv3jo ปีที่แล้ว

    Спасибо, за ценный совет!

  • @user-ot6gh4ym2i
    @user-ot6gh4ym2i ปีที่แล้ว

    Спасибо! очень полезно!

  • @gameit1477
    @gameit1477 26 วันที่ผ่านมา

    Нормально объяснил! Красава! Надеюсь, боли станет меньше

  • @veli2698
    @veli2698 ปีที่แล้ว +27

    Что конкретно ты хотел проверить в Example1 (2:57)? Какая там могла быть разница, если ты рендерил оба варианта всего один раз? Разумеется, вычисление что с useMemo, что без него будет выполняться при первом рендере и время рендера будет +- одинаковым. Уже со второго рендера можно было бы проверять разницу - в компоненте с useMemo результат взялся бы из кеша, а в компоненте без useMemo вычислялся бы заново

    • @vibius6385
      @vibius6385 ปีที่แล้ว +5

      Типичный тест от синьора-тимлида

    • @egorer5300
      @egorer5300 ปีที่แล้ว +3

      Плюсую, очень странный тест. И спойлер: работать будет так же ибо автор забил на второй аргумент, а точнее там пустой массив.

    • @gloompiqueweb1209
      @gloompiqueweb1209 ปีที่แล้ว +1

      тот же вопрос) рад что я не один, а то уже засомневался

    • @Fodintsov
      @Fodintsov 10 หลายเดือนก่อน +1

      Я тоже сначала возбудился на это. А потом обратил внимание на числа в профайлере. Там что-то порядка 3-4 мс. Ну, в офигенном случае будет 1 мс от использования юзмемо. И чо? Кто это заметит? )))

    • @seen6122
      @seen6122 5 หลายเดือนก่อน

      @@Fodintsov никто не замечает разницы и плюет на оптимизацию, а потом на проектах говнокоды

  • @jamjam3337
    @jamjam3337 ปีที่แล้ว

    спасибо!👏👍

  • @tanercoder1915
    @tanercoder1915 ปีที่แล้ว

    Изложение супер!

  • @xice111
    @xice111 ปีที่แล้ว

    С возвращением

  • @user-hg5sc1yi8t
    @user-hg5sc1yi8t 11 หลายเดือนก่อน +1

    А стоит ли использовать юс мемо если например есть какие-то данные в переменной и из-за обновления пропсов происходит перерендер компонента и эта переменная с данными пересоздается лишний раз. А у нас на неё хук юс эффект навешен, например. Тогда юзать мемо ок?

  • @AndreiShchetkin
    @AndreiShchetkin ปีที่แล้ว +8

    3:20 Ты сравниваешь рендер с вычислениями, но фишка хука в мемоизации, а ты показываешь разницу на холодную загрузку
    И еще, из документации:
    If the overall logged time adds up to a significant amount (say, 1ms or more), it might make sense to memoize that calculation

    • @cybersystem5137
      @cybersystem5137 2 หลายเดือนก่อน

      вопрос в другом: если нет разницы, то оно точно работает так, как описано в ролике? ))) Ведь если там внутри суперсложная логика, то там, где оно "лишнее" - разве не должно работать ДОЛЬШЕ? Почему же оно одинаково? Может все-таки внутри у хуков есть оптимизация и они сами понимают что делать?

    • @KuruApni
      @KuruApni 3 วันที่ผ่านมา

      significant amount = 1ms? you mad bro?

    • @cybersystem5137
      @cybersystem5137 2 วันที่ผ่านมา

      @@KuruApni 🤣

  • @natanrock4358
    @natanrock4358 ปีที่แล้ว +2

    @Archakov Blog, привет, можешь по-братски фиксануть демо pizza 2? Спасибо большое!

  • @whi5k3y22
    @whi5k3y22 ปีที่แล้ว +3

    Многие забывают что результат кеширования и так надо где-то хранить, и оборачивать все в useMemo это только нагрузка

  • @it-kachalka
    @it-kachalka 2 หลายเดือนก่อน

    Может быть, это прозвучало в видео и я не заметил, но один из самых действенных способов это спросить себя: "выиграем ли мы от использования useMemo, с учетом, что нам нужно на каждый цикл (1) произвести вызов функции (это медленнее большинства операторов), (2) аллоцировать место под массив и заполнять его значением (послений аргумент useMemo)" - и если человек хоть сколько то понимает что такое память и принцип вызова функций, он достаточно просто сможет принимать решение о том нужно ли использовать useMemo

  • @gravedigger7332
    @gravedigger7332 ปีที่แล้ว +9

    На мой взгляд упущено несколько важных деталей использования мемоизации от реакта*
    1. PureComponents / React.memo() - Пропс пассинг в таких компонентах должен быть мемоизированным, в противном случае это просто не будет работать.
    2. Почему то не учитывается сложность по памяти, ведь создание уймы ссылок на обьекты при вызове компонента так же не есть хорошо.
    3. Использование мемоизации в больших контроллерах контекста или компонента (либо контейнерных компонентах)

    • @akichula
      @akichula ปีที่แล้ว +1

      1) Я бы добавил что не обязательно все стоит мемоизнуть, а только объекты, примитивы можно передавать как есть

  • @aslanator
    @aslanator ปีที่แล้ว +2

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

    • @egorer5300
      @egorer5300 ปีที่แล้ว

      жаль что автор не раскрывает тему ререндора, а лишь вопрос кеширования вычислений

  • @AmericanDragon134
    @AmericanDragon134 ปีที่แล้ว +1

    планируешь-лы видос про SEO optimization , Google search console

  • @doge8633
    @doge8633 ปีที่แล้ว +16

    почему так часто пропадаешь?

  • @akichula
    @akichula ปีที่แล้ว +10

    5:40 в example6.jsx интересный момент:
    useMemo не просто бесполезен, в данонм случае он будет делать лишние рендеры компонента Header и div с children'ом, т.к. обновление идёт по userData. При этом если мы просто поместим этот же код (без фрагментов) на 21 строку, обновляться в случае изменения userData будет только один компонент Profile, что логично ведь это его пропс

    • @QBasic60
      @QBasic60 ปีที่แล้ว

      С каких пор изменение пропсов влияет на рендер?

    • @messenja2547
      @messenja2547 ปีที่แล้ว +8

      @@QBasic60 не шути так

    • @veli2698
      @veli2698 ปีที่แล้ว +2

      реакт так не работает
      1. useMemo - не реактивный хук. Хуки вызываются исключительно при рендере. Депсы хуков (useMemo, useEffect, useCallback) не являются реактивными триггерами их вызова, а лишь позволяют избегать вызовы коллбеков, переданных в эти хуки, при условии, что депсы не поменялись. Т.е. хуки будут вызываться ровно столько же раз, сколько рендеров произойдет в компоненте. Их колбеки будут соответственно вызываться тоже исключительно при рендере и при условии, что какой-то из депсов изменился
      2. если ты засунешь хедер и див с чилдреном на 21 строку, то они будут перерендериваться при каждом рендере Layout. Если они останутся в useMemo, то они будут рендериться при каждом рендере, за вычетом тех рендеров, которые были проигнорированы с помощью useMemo. Т.е. этих рендеров может быть либо столько же, сколько и на 21 строке, либо меньше

    • @veli2698
      @veli2698 ปีที่แล้ว

      ​@@messenja2547 изменение пропсов по умолчанию не влияет на рендер. Ререндер триггерится по сути одним действием - изменением состояния. При изменении состояния вызывается функция-компонент или метод render классового компонента, из-за чего вызывается рендер всех компонентов, которые рендерятся в них (потому что по сути JSX-верстка - это вызовы React.createElement, которые неизбежно вызываются, если вызвана функция, в которой эти вызовы расположены, т.е. наша функция-компонент или render метод).
      Т.е. если говорить изолированно о конкретном компоненте, то он рендерится по двум причинам - из-за изменения его состояния или из-за рендера родительского компонента (фактически же эта причина является следствием изменения состояния где-то выше в дереве)
      Если родительский компонент перерендерится, его дочерние компоненты перерендерятся вне зависимости от того, изменилсь их пропсы или нет. Это поведение можно изменить использованием React.memo. С его использованием по умолчанию пропсы будут сравниваться и повторный рендеринг будет происходить только при их изменении. Но это не то, как работает рендеринг в реакте, это мемоизация. Фактически рендер тригерится на этом хоке, а он уже, имея контроль над компонентом, который мы ему передали, своей внутренней логикой предотвращает его рендер и возвращает кеш.

  • @alexeyilin1527
    @alexeyilin1527 ปีที่แล้ว +2

    Ну в 7:46 можно тоже без юзмемо, просто вынести в отдельный компонент счётчик
    Крч по моему опыту 99% использований юзмемо были из за неправильной организации структуры компонентов

  • @never.m1nd
    @never.m1nd 8 หลายเดือนก่อน

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

  • @ValdemarPetrovich
    @ValdemarPetrovich ปีที่แล้ว +3

    Так: второй пример разберем. Сравнение, как мне кажется не корректное: нужно посмотреть сколько займет рендер компоненты с юз мемо, если ее вызовут второй и последующие разы с теми же параметрами. По идее в разы меньше, так как не будет вычисления. Если это бизнес кейс, то оптимизация нужна, нет?

    • @veli2698
      @veli2698 ปีที่แล้ว +2

      да, в примере автора абсолютно бессмысленное сравнение, оно ничего не показывает

  • @janedow
    @janedow ปีที่แล้ว +1

    оправдано ли использовать usememo для хранения найденного товара в корзине(500 товаров)? хотя без usememo не тормозит, но на всякий случай спрашиваю, вдруг операция поиска дорогая

    • @veli2698
      @veli2698 ปีที่แล้ว +3

      в компонентах вообще не стоит логику поиска товара в корзине делать. Компоненты - это про UI, а не про данные и бизнес логику. Для таких вещей есть стейт менеджеры, в которых не возникает такого вопроса в принципе.
      не должны вычисления данных и бизнес логика зависить от рендеринга. Рендеринг должен зависеть от данных (поменялись нужные данные -> произошел рендеринг), а не наоборот (произошел рендеринг -> вычисляем данные)
      если же отвечать на этот конкретный вопрос, то "операция поиска", если речь идет о find - это цикл на 500 итераций. Скорее всего, это мелочь даже для телефонов. Хотя все зависит от количества рендеров этого компонента и логики в колбеке, передаваем в find (к примеру, там могут быть какие-то вложенные циклы или еще что-то)

  • @nurzatertugan1985
    @nurzatertugan1985 ปีที่แล้ว

    а ели у меня несколько хуков и каждую из них нужно сделать проверку, и при chenge одного, все хуки будут делать проверку

  • @MK-td2dt
    @MK-td2dt ปีที่แล้ว +1

    Во втором примере если компонент будет рередериться то useMemo как раз таки необходим , так как без использования useMemo функция будет запускаться при каждом ререндере .

    • @akichula
      @akichula ปีที่แล้ว +3

      Да, функция будет запускаться, но ключевая идея в том чтобы мемоизировать именно сложные вычисления. В данных примерах идёт игра за миллисекунды перфоманса, где даже нет вложенных объектов, поэтому в подобных функциях следует избегать использования мемоизации

    • @alexandrcorbin1709
      @alexandrcorbin1709 ปีที่แล้ว +2

      @@akichula так может свои тесты нужно проводить на жирных компонентах, как в реальной жизни, а не объявлять компонент, возвращать div и говорить, что разницы нет никакой? Полное отсутствие логики, что у тебя, что у автора.

    • @MK-td2dt
      @MK-td2dt ปีที่แล้ว

      @@alexandrcorbin1709 вот я о том же

  • @user-ju8hu7rd3s
    @user-ju8hu7rd3s ปีที่แล้ว

    А вы ведете еще менторство по реакту?

  • @NoName-oh9fh
    @NoName-oh9fh ปีที่แล้ว

    На самом деле в некоторых моментах можно использовать useMemo если понимать как работает реакт. Не буду говорить за примеры, потому что не вижу полного кода приложения.
    Иногда выгоднее использовать useMemo с зависимостями чем лишний раз заставлять реакт что то перевычислять даже если ничего не лагает. Просто нужно иметь понимание для чего ты это делаешь. Так что Денис в чем то ты прав и в то же время не прав. Вот такая тавтология)

  • @artars
    @artars ปีที่แล้ว +3

    Автор, а пробовал ли ты в не пет проекте с большИм деревом вложенных компонентов сделать банальный console.log где то в глубине? Сколько будет его вызовов? Даже простые операции при большом их количестве будут существенно влиять на производительность. useMemo это способ заплатить озу вместо цпу. Так же странно что автор не видит смысл когда в deps передаётся не все что используется внутри хука. Вероятно результат не должен зависеть от того что не в deps, не?

    • @grenadier4702
      @grenadier4702 ปีที่แล้ว

      Все, кроме 2:57, правильно. Остальное - оверхед, не дающий ничего. Мемоизировать булево выражение - это антипаттерн. Ты буквально на каждый рендер создаешь новый массив с зависимостями, вызываешь функцию useMemo, у тебя сравниваются депсы. Это явно медленнее, чем сразу же проверить что-то

  • @pahakush
    @pahakush ปีที่แล้ว

    React конечно хорошо, но как насчет Flutter? Не планируешь чего-то нового?

  • @Elren44
    @Elren44 ปีที่แล้ว

    Тоже слышал от одного разраба, что у них практически все обернули в usememo «на всякий случай»😅

  • @KuruApni
    @KuruApni 3 วันที่ผ่านมา

    Ты это я. За последние 6 лет я банально устал всем доказывать, что вот такая преждевременная оптимизация - полный треш. Разработчики реакт настолько насмотрелись на весь этот треш, что в 19ой версии ввели отдельный React Compiler для таких горе сеньоров.

  • @____Olga__
    @____Olga__ ปีที่แล้ว

    😁

  • @Todortodorov62
    @Todortodorov62 4 วันที่ผ่านมา

    угар)

  • @DubinArtur
    @DubinArtur 11 หลายเดือนก่อน

    У тебя выбор: 20% производительности или 20% памяти. Что выберешь?

  • @unknown-vh1dc
    @unknown-vh1dc 8 หลายเดือนก่อน

    Я иногда использую usememo как замену useeffect + usestate, что б код был более читаемый, но не уверен насколько страшно такое преступление, знатоки - просветите 🤔

  • @mixfix86
    @mixfix86 ปีที่แล้ว +2

    Я смотрю, не трогайте меня

  • @whiteguards43
    @whiteguards43 ปีที่แล้ว

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

  • @zaits2576
    @zaits2576 ปีที่แล้ว

    Парни, вопрос слегка не в тему. Но может кто-то сказать о минусах использования React.memo, иначе говоря, какова цена за его использование?

    • @ArchakovBlog
      @ArchakovBlog ปีที่แล้ว +1

      Минусов как таковых и нет. Используй просто по назначению.
      В видео я объяснил в каких случаях. В остальных нет смысла

    • @masserrackheim5358
      @masserrackheim5358 ปีที่แล้ว

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

    • @grenadier4702
      @grenadier4702 ปีที่แล้ว

      ​@@masserrackheim5358 громоздкость + сравнить несколько значений - это быстрее, чем создать массив депсов, сравнить его значения со старыми, вызвать функцию useMemo

  • @kimblinov1594
    @kimblinov1594 ปีที่แล้ว

    а еще я может пропустил - useMemo не всегда кэширует и может удалять кэш произвольно сам ( дока реакта ) подробнее описывать не буду)

    • @alexeyser
      @alexeyser ปีที่แล้ว

      да ты пропустил, что именно рассказывать не буду)

  • @cybersystem5137
    @cybersystem5137 2 หลายเดือนก่อน

    Тут как бы вопрос: если рендер занимает одинаковое время С и БЕЗ useMemo, то возникает вопрос: а точно там мемо не нужен? Суть вот в чем: если внутри своя логика и бла-бла-бла, то ожидается, что будет с мемо работать ДОЛЬШЕ. Логично? Тогда почему работает одинаково? Может быть реакт сам внутри понимает уже сегодня надо или нет? А как раз в этом может и есть суть? Разрабы реакта говорят: оборачивайте ВСЕГДА, а мы сами внутри разберемся. Ну т.е. из этих же примеров видно, что разницы нет. Т.е. очевидно, что внутренняя логика этих хуков либо работает не так, как вы предполагаете, либо все же внутри есть оптимизация.

  • @user-uniq-id
    @user-uniq-id ปีที่แล้ว +16

    Я учу фронт, и боялся этих хуков (мемо и колбек), потому что не понимал куда их пхать, и соответственно игнорил их. Теперь понимаю, что делал все правильно :)

    • @igor.zxcvbnm
      @igor.zxcvbnm ปีที่แล้ว

      А я впервые столкнулся когда у меня хренова туча рендерингов вызывалось при переходе на след.пред страницу xD
      К тому времени я уже овладел более мене Redux)

  • @kvazimode2
    @kvazimode2 ปีที่แล้ว

    Usememo не обязательно использовать для сложных вычислений. В некоторых случаях его использование может предотвратить вызов useffect при перерисовывании компонента. th-cam.com/video/GGo3MVBFr1A/w-d-xo.html

  • @vitaliynoveles6626
    @vitaliynoveles6626 ปีที่แล้ว +1

    Ролик можно переименовать в - "Невыдуманные истории о которых невозможно молчать" :)

  • @vibius6385
    @vibius6385 ปีที่แล้ว +1

    Ох уж эти синьоры, не знающие как работает useMemo. Я бы такого разработчика даже мидлом не назвал.

  • @DubinArtur
    @DubinArtur 11 หลายเดือนก่อน

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

    • @user-uw9xp8en3v
      @user-uw9xp8en3v 6 หลายเดือนก่อน

      Преждевременная оптимизация никому никогда не помогала

  • @dumkiAndrusja
    @dumkiAndrusja ปีที่แล้ว +5

    Ого а ты уже сеньором стал ? )

    • @ArchakovBlog
      @ArchakovBlog ปีที่แล้ว +5

      конкистадором

    • @serko2898
      @serko2898 ปีที่แล้ว

      насколько я знаю, давно уже, время не стоит на месте :)

    • @mixfix86
      @mixfix86 ปีที่แล้ว

      ​@@ArchakovBlog герцогом

    • @eradzhmirzoev1330
      @eradzhmirzoev1330 ปีที่แล้ว

      @@ArchakovBlog 😂😂😂

  • @ilikecola378
    @ilikecola378 ปีที่แล้ว

    Какой кошмар, первые 6 примеров почему не стоит использовать usemamo про одно и тоже, и еще вставка мемасиков, еле дотерпел до когда нужно использовать. Теперь перейдем к примеру когда нужно использовать useMemo, Вы кэшируете компонент в зависимости от его пропсов, но это антипаттерн потому что для этого есть React.memo. Во вторый Вы используете редакс, да понимаю это просто потому что захотелось, но редакт тоже умеет кешировать и в этом случае кеширование лучше былобы сделать в редаксе, но это отдельная тема. Можно было просто сделать функцию которая требует сложных вычислений чтобы ничего не отвлекало. Посоветую во благо давний видос Айти синяк "Что вы знаете о useCallback?" про мемоизацию и его видос смотрится куда интереснее и там больше файктов, я не хочу чтобы вы его копировали просто он не повторяет одно и тоже по несколько раз, найдите свой путь, но именно этому видео не хватает технических фактов, и можно было свести к одной минуте. Я желаю Вам творческих успехов, но вот такое мое мнение о этом видео. Не в обиду!

  • @AxisPod
    @AxisPod ปีที่แล้ว

    Кэшировать компонент, простите, что за бред? Зачем. Когда надо было кэшировать логику расчёта. Хотя и согласен про React.memo, тут в тему всё же, но не useMemo же. А так useMemo используется не только для тяжёлых расчётов, но и временами приходится для компонентов принимающих объекты на вход. Приходится формирование объектов покрывать useMemo.

    • @ivankprod
      @ivankprod 8 หลายเดือนก่อน

      Ну вот, например, у меня есть контекст createContext({ scope: "" }), каждый роут получает этот контекст и оборачивает свои children в провайдер этого контекста, в зависимости от страницы в пропс value которого идет установка value={{ scope: "some_page" }}. Затем в навигации тупо { scope } = useContext(ScopeContext). Зачем здесь мемоизировать объект со скоупом?

  • @kaifaty
    @kaifaty ปีที่แล้ว

    "Абсолютно никто из них не задумывается" - ойли?)

  • @alexandrcorbin1709
    @alexandrcorbin1709 ปีที่แล้ว +2

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

    • @masserrackheim5358
      @masserrackheim5358 ปีที่แล้ว

      скорее всего это код с каких нибудь курсов "войти в айти за неделю"

    • @alexandrcorbin1709
      @alexandrcorbin1709 ปีที่แล้ว

      @@masserrackheim5358 да на самом деле работаю на проекте, где ребята такую же чушь могут спокойно написать, у них хорошие зарплаты и лычки, так что верю, что код по мотивам реального. Он там просто странные вещи про сам реакт мемо говорил, как-то непрофессионально, как будто что-то понял, но вообще базово не понимает что такое сложность по памяти например.

  • @mtb-love-belarus
    @mtb-love-belarus ปีที่แล้ว

    Они думают, что useMemo бесплатный, а он не бесплатный)

  • @kimblinov1594
    @kimblinov1594 ปีที่แล้ว

    посмотрел видео - почему ты говоришь мидлы /сеньры это все код джунов ?
    почему занижают планки и уже крепкий джун считается сеньером =_=
    из-за этого на рынке и блуждают псевдо сеньеры со знаниями джунов =)

    • @alexandrcorbin1709
      @alexandrcorbin1709 ปีที่แล้ว +2

      Какие планки? Программирование - это не наука, а фронтенд область домохозяек. Соответственно соврать, что ты лев толстой, а на деле ***й простой не составляет труда при развитой метле и не очень шаристых типах, что тебя набирают. Объективных критериев кто хорош, а кто плох, нет.

  • @user-wl2xp8yo6x
    @user-wl2xp8yo6x ปีที่แล้ว

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

    • @ArchakovBlog
      @ArchakovBlog ปีที่แล้ว

      Почему пора?

  • @njajke_s1147
    @njajke_s1147 ปีที่แล้ว +1

    useMemo не так сильно влияет на перформанс, если верить видео с разбором его под капотом.
    Так что если в команде принято мемоизировать все, то почему бы и нет?
    Я юзаю его как аналог computed во Vue, либо для графиков

    • @moscowtv5767
      @moscowtv5767 ปีที่แล้ว +1

      "Эта оптимизация помогает избежать дорогостоящих вычислений при каждом рендере." - из документации. Ключевое слово найдите сами. :)

    • @njajke_s1147
      @njajke_s1147 ปีที่แล้ว

      дубль два написать комментарий (первый стёрт из-за вордфильтра на ссылки)
      @@moscowtv5767 вы бесконечно правы в этом утверждении. В свою очередь, я не смог найти такого в новой документации реакта (react 'точка' dev).
      Не ограничиваясь синтетическими примерами, сложно представить пример, когда useMemo будет реально экономить. Однако в документации написано следующее: "There is no significant harm to doing that either, so some teams choose to not think about individual cases, and memoize as much as possible" ([API] Reference -> useMemo -> "Should you add useMemo everywhere"). Это то, о чём я и говорю: если в команде есть обсессия на мемоизацию и производительность, всё же лучше придерживаться одного дизайна, useMemo не стоит так дорого.
      Тем не менее, есть кластер задач, где useMemo создает лишь дополнительную нагрузку. Например, когда в депенденсилисте все пропсы и всё состояние компонента.
      Замечу, что если в вычислении участвуют 1-2 пропса/стейта, которые меняются редко, из 5-6, и при этом остальные могут меняться часто, я бы всё же обернул такое вычисление в useMemo: это не будет противоречить гайдам из документации и здравому смыслу.

    • @shakapaker
      @shakapaker ปีที่แล้ว +1

      аххаха

    • @alexandrcorbin1709
      @alexandrcorbin1709 ปีที่แล้ว +1

      Очередная домохозяйка во фронтенде. Спасибо за экспертное мнение.

  • @ringnull
    @ringnull ปีที่แล้ว

    0:40 мидл тире сеньёр? На 6 строке вместо Link a href?

    • @tonymonttana7
      @tonymonttana7 ปีที่แล้ว +3

      что тебя не устраивает? По твому в реакте есть компонент Link?

    • @ringnull
      @ringnull ปีที่แล้ว

      @@tonymonttana7 Перед тем, как писать такую дурь, ты хоть в гугл вбей запрос Link, NavLink...

    • @nomad5566
      @nomad5566 ปีที่แล้ว +2

      Ну так мб это ссылка на внешний ресурс?

    • @ringnull
      @ringnull ปีที่แล้ว

      @@nomad5566 я не вижу в параметрах этого...

    • @TheWorldPeace
      @TheWorldPeace ปีที่แล้ว

      Чел ты...

  • @batm1x
    @batm1x ปีที่แล้ว +3

    Если сеньор делает такие очевидные джуниорские ошибки, то возникает вопрос, а кто вообще назвал этого программиста сеньором? В моем понимании сеньор понимает, как работает фреймворк под капотом. Или нет?

    • @ant3413
      @ant3413 ปีที่แล้ว

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

    • @batm1x
      @batm1x ปีที่แล้ว +5

      @@ant3413 эмм, как бы нет. Как раз наоборот, если ты сеньор в какой-то технологии, то должен понимать, зачем ты используешь ту или иную функцию и как она работает, а не штамповать код на автомате. Зачем всё знать? Я разве это сказал? Но знать, как работает под капотом хук, который ты используешь, разве сеньор не должен? Или в чем тогда отличие мидла от сеньора?

    • @ant3413
      @ant3413 ปีที่แล้ว +1

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

    • @batm1x
      @batm1x ปีที่แล้ว +6

      @@ant3413 так я и спрашиваю, чем тогда отличаетесь?))) Хорошо, уточню. Знать не в плане глубокого понимания технической реализации хука, а в плане понимания, чем хук занимается, как ведет себя в рантайме, на примере тех же мемоизирующих функций понимать целесообразность, опытный увидит, стоит ли кэшировать какие-то вычисления или дешевле по ресурсам просто каждый раз делать эти вычисления при рендере. Мне кажется в этом проявляется сеньор, из-за опыта он видит некоторые вещи более глубоко. Конечно углубляться в исходный код хуков не надо, но углубиться хотя бы до такого уровня, чтоб понимать, зачем ты это делаешь, а не делать просто на автомате, потому что ну вроде как так надо. Или поясни мне нормально отличия, а не говори про мои большие проблемы, я же серьезно спрашиваю

    • @Kempriol
      @Kempriol ปีที่แล้ว

      @@batm1x Давайте представим программиста в вакууме, работающего в конторе лет 5-7, который знает как работает проект, тянет джунов, понимает в ci/cd, в развёртывании приложений, в настройке nginx, постоянное общение с бэком и аналитическим/менеджерским составом, делегирует полномочия внутри коллектива и оперативно может подтянуть баги под конкретный дедлайн/релиз. Может ли условная контора считать по импакту, который он делает его синьором? Мне кажется - да. Причем, если перенести этого программиста в другую организацию, он никакой не синьор - на раскачку может уйти до полугода, чтобы он был столь же полезен.
      Если мы берём этого программиста и грейдим по вашему описанию - скорее он мидл. Вы, как мне кажется, описываете js инженера, который копает глубоко по хардам, этот человек точечно может хорошо улучшить и понять корень проблем, но не только в этом заключается синьёрность