Первое погружение в исходники хуков (задел на будущее)

Поділитися
Вставка
  • Опубліковано 28 лис 2024

КОМЕНТАРІ • 54

  • @xandmore
    @xandmore 3 роки тому +27

    8:23, вообще говоря, количество зависимостей не должно совпадать. Там бы стояло OR. А это означает, что количество итераций цикла определяется по наименьшему из массивов, что довольно странно, не находите? Да, мы увидим console.error о разном количестве аргументов шагом выше, конечно. Но, коли мы уж копаем до сути, то давайте на это обратим внимание :)
    Пример, показанный в видео: [apartment, user, null] будет равен [apartment, user]
    Спасибо большое за труды!

    • @it-sin9k
      @it-sin9k  3 роки тому +7

      ч0рд) и действительно) все вплоть до наоборот) если отсечь какую-то зависимость при новом рендере, то зависимости могут быть равны между собой) Запиню комментарий!

    • @olezhonnv3215
      @olezhonnv3215 2 роки тому +1

      Меня там contiinue особо радует! В том блоке кода.
      Сразу видно крутых девелоперов из ФААНГ!

    • @olezhonnv3215
      @olezhonnv3215 2 роки тому

      Чтобы понять про continue, надо идти дальше - в исходники V8.
      Это я глупость написал, наверное. А может и нет.
      Прсто, насколько я помню, continue под капотом у V8 реализовано так, что затормаживает цикл.
      Но может и путаю.

    • @atlantatesla9348
      @atlantatesla9348 6 місяців тому

      Отличный комментарий, спасибо! Сейчас протестировала и это реально так работает.
      Последовательное изменение deps таким образом:
      ['Hello', 3] -> ['Hello'] -> ['Hello', 5] -> ['Hello'] -> ['Hello', 7]
      bообще не вызывает callback useEffect'а

  • @taras.batura
    @taras.batura 3 роки тому +19

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

    • @it-sin9k
      @it-sin9k  3 роки тому +15

      У меня самого много лет руки не доходили многие исходники глубоко поковырять, до старта этого канала) теперь наслаждаюсь)

  • @ilnurryazhapov
    @ilnurryazhapov 3 роки тому +5

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

    • @it-sin9k
      @it-sin9k  3 роки тому +4

      Да я сам несколько лет, мне кажется, хотел поковыряться в исходниках и вот целый канал завел, чтобы это сделать)

  • @sergeysibara4346
    @sergeysibara4346 3 роки тому +3

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

    • @it-sin9k
      @it-sin9k  3 роки тому +3

      Это видео было скорее ознакомительное) чтобы было вообще представление о том где можно найти исходники. Что под одним хуков кроется несколько функций. И насколько некоторые имплементации хуков (useCallback) могут быть примитивными (за исключение методов mountWorkInProgressHook() и updateWorkInProgressHook(), их можно пока воспринимать как черные ящики, которые возвращают один и тот же объект хука). Поэтому в след видео будем чаще ссылаться на исходники и раскрывать чуть шире этот вопрос. Поэтому оставайтесь на канале и возможно мы сможем хорошо раскрыть вопрос на протяжении N видео)

  • @Ramosok
    @Ramosok 2 роки тому +1

    Ролики можно пересматривать бесконечно и каждый раз ты видишь что то новое) это просто шикарно!

    • @it-sin9k
      @it-sin9k  2 роки тому

      Спасибо) хотя я думаю, что этот ролик не самое лучшее творение))

  • @lomeat
    @lomeat 3 роки тому +3

    о, видос с утречка, кайф

  • @atlantatesla9348
    @atlantatesla9348 6 місяців тому +1

    @it-sin9k , я немного запуталась)
    linked list на 12:10 хранит в себе хуки всего приложения или только одного компонента?
    Из этого видео я поняла, что один linked list это место хранения для всего приложения.
    Но в каком-то другом вашем видео, была схема дерева и linked list располагался в одной node (кажется так)

    • @it-sin9k
      @it-sin9k  6 місяців тому +2

      а я помню, где то с ошибкой записал) Каждый компонент, хранит в себе linked list его хуков :)

    • @atlantatesla9348
      @atlantatesla9348 6 місяців тому

      @@it-sin9k отлично, благодарю!

  • @alexanderpodlesnyi8096
    @alexanderpodlesnyi8096 2 роки тому +2

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

    • @starwalker.musician
      @starwalker.musician 2 роки тому +1

      Возьми конфетку с полочки! Старательный ты наш ))))))))))

  • @kirillcherkalov
    @kirillcherkalov 3 роки тому +1

    Спасибо за видео

  • @НикитаГончаров-е8ш

    Топ🔥🔥🔥

  • @ДаниярКаби
    @ДаниярКаби 2 роки тому

    большое спасибо, ты крут !

  • @ИванИванов-у3ч4м
    @ИванИванов-у3ч4м 2 роки тому

    Отлично видео! Ещё бы чего-то подобного...

    • @it-sin9k
      @it-sin9k  2 роки тому

      Так там еще видео 5-10 с разбором исходников хуков :)

  • @АлексейШишкин-ф9п
    @АлексейШишкин-ф9п 3 роки тому +2

    Привет, расскажи про компоненты высшего порядка

  • @Programarium_academy
    @Programarium_academy 3 роки тому

    спасибо

  • @olezhonnv3215
    @olezhonnv3215 2 роки тому +1

    Во накрутили. Что они там курят, в фейсбуке, что такую дичь наворачиваают?
    Я колупаллся в исходниках реакта. Там у них дичь, в том смысле, что изначально придумали чепуху, потом подперли костылем то, что болит.
    Потом очередным костылем подперли тот костыль, который решал предыдущую боль.
    Но снабдили это неплохим интерфейсом, более-менее удобным для юзера, которому под капот лезнь не обязательно.
    И каким-то чудом хайпанули!
    То же думаю и про редакс. Но редакс - еще большая дичь, потому что интерфейс неудобный.

    • @olezhonnv3215
      @olezhonnv3215 2 роки тому +1

      Там костылей на костылях - вложенный список.
      Но чтобы это осознать - надо думать на особом уровне абстракции.
      Сениор Реакт девелоперы до такого дойдут лет через 8 - 10 в профессии.
      Когда просто сениорами станут, без реакт.

    • @it-sin9k
      @it-sin9k  2 роки тому +2

      @@olezhonnv3215 А есть какой-то пример годно написаного фреймворка? я просто к тому, что не скатываются ли все фреймворки к такой же дичи)

  • @dedarm9837
    @dedarm9837 3 роки тому +3

    «Не пишите на ДжаваСкрипт»?

    • @it-sin9k
      @it-sin9k  3 роки тому +2

      Какую запись прислал подписчик, такую и опубликовали)

    • @dedarm9837
      @dedarm9837 3 роки тому

      @@it-sin9k Понял. Просто странно прозвучало. ЖВ
      Спасибо Вам за видео и за ответ! ^^

    • @cikada3398
      @cikada3398 3 роки тому +2

      Может имелось в виду юзайте TS

  • @vladimirpolyakov4382
    @vladimirpolyakov4382 3 роки тому +3

    Ооох слажна =)

  • @d0paminer
    @d0paminer 2 роки тому

    +

  • @vibius6385
    @vibius6385 3 роки тому +5

    Интересная задумка, но не думаю, что новички что-то поймут, а программисты с опытом сами в состоянии покопаться в исходном коде. Имхо, если и ковырять исходный код, то было бы интереснее получить более целостное описание архитектуры, а не "здесь такая функция, она берётся из такого файла, а там ещё одна функция etc".

    • @it-sin9k
      @it-sin9k  3 роки тому +9

      Я думаю этот комментарий можно отнести к многим моим видосам) Новичкам сложно, а опытные и сами разберутся) Поэтому при создании канала мы решили не ориентироваться на новичков, т.к. для них контента и так пруд пруди, а скорее сделать для опытных.
      А про опытных я бе не сказал так однозначно. Очень многие программисты из моего окружения или те, кого я собеседовал, не открывали ни разу исходники.
      Поэтому, у этого выпуска было 2 цели: первая - это таким людям приоткрыть как это работает изнутри и нет там каких-то супер сложностей разобраться, а вторая - сделать задел на следующие видео, чтобы потом не рассказывать где что лежит и что такое mountWorkInProgressHook :)

    • @apanchuk
      @apanchuk 3 роки тому +10

      Мир не черно-белый, где ты сначала новичок, а один прекрасный момент становишься опытным и легко разбираешься в исходниках библиотек. Посередине есть еще много итераций, когда ты открываешь исходники и пытаешься понять. И подобные видео в этом помогают хотя бы тем, что делятся подходом.

    • @it-sin9k
      @it-sin9k  3 роки тому +1

      хорошо сказано!)

    • @vibius6385
      @vibius6385 3 роки тому

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

    • @it-sin9k
      @it-sin9k  3 роки тому +4

      Думаю причина следственная связь немного нарушается в моменте "значит он ещё не умеет пользоваться абстракцией". Из того что человек не лазит в исходники не значит, что он не умеет пользоваться либой или то что он не прочитал внимательно документацию. Вообще я думаю никто не знает идеально документацию реакта, так она вечно зеленая и огромная кодовая база. У всех можно найти какие то дыры иногда даже в простых местах.
      Лично я у себя находил много таких и по сей день нахожу, особенно когда начал заниматься этим каналом, хотя казалось, все просто и понятно, но нюансы вылазят очень часто.

  • @mzpizote
    @mzpizote 2 роки тому

    Нимчего не помняв, почиму так все сложно там?

  • @dm.hol.3624
    @dm.hol.3624 3 роки тому

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

    • @it-sin9k
      @it-sin9k  3 роки тому +1

      либо у библиотеки плохая документация) тогда без исходников не разберешься)