8:23, вообще говоря, количество зависимостей не должно совпадать. Там бы стояло OR. А это означает, что количество итераций цикла определяется по наименьшему из массивов, что довольно странно, не находите? Да, мы увидим console.error о разном количестве аргументов шагом выше, конечно. Но, коли мы уж копаем до сути, то давайте на это обратим внимание :) Пример, показанный в видео: [apartment, user, null] будет равен [apartment, user] Спасибо большое за труды!
ч0рд) и действительно) все вплоть до наоборот) если отсечь какую-то зависимость при новом рендере, то зависимости могут быть равны между собой) Запиню комментарий!
Чтобы понять про continue, надо идти дальше - в исходники V8. Это я глупость написал, наверное. А может и нет. Прсто, насколько я помню, continue под капотом у V8 реализовано так, что затормаживает цикл. Но может и путаю.
Отличный комментарий, спасибо! Сейчас протестировала и это реально так работает. Последовательное изменение deps таким образом: ['Hello', 3] -> ['Hello'] -> ['Hello', 5] -> ['Hello'] -> ['Hello', 7] bообще не вызывает callback useEffect'а
Хорошее видео. В тему про: "зачем программистам с опытом, если и сами могут глянуть", у меня мнение, что всего не глянешь. У тебя может из-за ежедневной рутины никогда не дойдет дело до того, как же там реализовано в исходнике, а вот такие видео помогают с идеями как можно свои знания прокачать.
Пожалуй это самые запутанные исходники из тех, в которых я лазил) При их изучении по ходу разбора явно надо как минимум денек-другой рисовать схемы, чтобы разобраться, как все эти части взаимодействуют друг с другом. Иначе в голове все эти переходы не соберешь в единое целое. Было бы очень здорово, если бы вы нарисовали подробную схему внутреннего устройства механизма хуков и рассказывали по ней о составлявших деталях этого механизма.
Это видео было скорее ознакомительное) чтобы было вообще представление о том где можно найти исходники. Что под одним хуков кроется несколько функций. И насколько некоторые имплементации хуков (useCallback) могут быть примитивными (за исключение методов mountWorkInProgressHook() и updateWorkInProgressHook(), их можно пока воспринимать как черные ящики, которые возвращают один и тот же объект хука). Поэтому в след видео будем чаще ссылаться на исходники и раскрывать чуть шире этот вопрос. Поэтому оставайтесь на канале и возможно мы сможем хорошо раскрыть вопрос на протяжении N видео)
@it-sin9k , я немного запуталась) linked list на 12:10 хранит в себе хуки всего приложения или только одного компонента? Из этого видео я поняла, что один linked list это место хранения для всего приложения. Но в каком-то другом вашем видео, была схема дерева и linked list располагался в одной node (кажется так)
Во накрутили. Что они там курят, в фейсбуке, что такую дичь наворачиваают? Я колупаллся в исходниках реакта. Там у них дичь, в том смысле, что изначально придумали чепуху, потом подперли костылем то, что болит. Потом очередным костылем подперли тот костыль, который решал предыдущую боль. Но снабдили это неплохим интерфейсом, более-менее удобным для юзера, которому под капот лезнь не обязательно. И каким-то чудом хайпанули! То же думаю и про редакс. Но редакс - еще большая дичь, потому что интерфейс неудобный.
Там костылей на костылях - вложенный список. Но чтобы это осознать - надо думать на особом уровне абстракции. Сениор Реакт девелоперы до такого дойдут лет через 8 - 10 в профессии. Когда просто сениорами станут, без реакт.
Интересная задумка, но не думаю, что новички что-то поймут, а программисты с опытом сами в состоянии покопаться в исходном коде. Имхо, если и ковырять исходный код, то было бы интереснее получить более целостное описание архитектуры, а не "здесь такая функция, она берётся из такого файла, а там ещё одна функция etc".
Я думаю этот комментарий можно отнести к многим моим видосам) Новичкам сложно, а опытные и сами разберутся) Поэтому при создании канала мы решили не ориентироваться на новичков, т.к. для них контента и так пруд пруди, а скорее сделать для опытных. А про опытных я бе не сказал так однозначно. Очень многие программисты из моего окружения или те, кого я собеседовал, не открывали ни разу исходники. Поэтому, у этого выпуска было 2 цели: первая - это таким людям приоткрыть как это работает изнутри и нет там каких-то супер сложностей разобраться, а вторая - сделать задел на следующие видео, чтобы потом не рассказывать где что лежит и что такое mountWorkInProgressHook :)
Мир не черно-белый, где ты сначала новичок, а один прекрасный момент становишься опытным и легко разбираешься в исходниках библиотек. Посередине есть еще много итераций, когда ты открываешь исходники и пытаешься понять. И подобные видео в этом помогают хотя бы тем, что делятся подходом.
@@apanchuk здесь уместнее сказать о недетерминированности, тейк про чёрное и белое не для этого. Если человек не дошёл до исходников, значит и смысла ему про них рассказывать нет, значит он ещё не умеет пользоваться абстракцией, следовательно, он не может до конца прочитать документацию и подобные видеоролики с повествованием о цепочке функций ничем ему не помогут, даже подходом.
Думаю причина следственная связь немного нарушается в моменте "значит он ещё не умеет пользоваться абстракцией". Из того что человек не лазит в исходники не значит, что он не умеет пользоваться либой или то что он не прочитал внимательно документацию. Вообще я думаю никто не знает идеально документацию реакта, так она вечно зеленая и огромная кодовая база. У всех можно найти какие то дыры иногда даже в простых местах. Лично я у себя находил много таких и по сей день нахожу, особенно когда начал заниматься этим каналом, хотя казалось, все просто и понятно, но нюансы вылазят очень часто.
Вообще необходимость открывать исходники, чтобы понять работу программы, - признак плохого дизайна API. Публичные методы должны давать полное подробное представление о своей работе, выдавать ожидаемые результаты.
8:23, вообще говоря, количество зависимостей не должно совпадать. Там бы стояло OR. А это означает, что количество итераций цикла определяется по наименьшему из массивов, что довольно странно, не находите? Да, мы увидим console.error о разном количестве аргументов шагом выше, конечно. Но, коли мы уж копаем до сути, то давайте на это обратим внимание :)
Пример, показанный в видео: [apartment, user, null] будет равен [apartment, user]
Спасибо большое за труды!
ч0рд) и действительно) все вплоть до наоборот) если отсечь какую-то зависимость при новом рендере, то зависимости могут быть равны между собой) Запиню комментарий!
Меня там contiinue особо радует! В том блоке кода.
Сразу видно крутых девелоперов из ФААНГ!
Чтобы понять про continue, надо идти дальше - в исходники V8.
Это я глупость написал, наверное. А может и нет.
Прсто, насколько я помню, continue под капотом у V8 реализовано так, что затормаживает цикл.
Но может и путаю.
Отличный комментарий, спасибо! Сейчас протестировала и это реально так работает.
Последовательное изменение deps таким образом:
['Hello', 3] -> ['Hello'] -> ['Hello', 5] -> ['Hello'] -> ['Hello', 7]
bообще не вызывает callback useEffect'а
Хорошее видео. В тему про: "зачем программистам с опытом, если и сами могут глянуть", у меня мнение, что всего не глянешь. У тебя может из-за ежедневной рутины никогда не дойдет дело до того, как же там реализовано в исходнике, а вот такие видео помогают с идеями как можно свои знания прокачать.
У меня самого много лет руки не доходили многие исходники глубоко поковырять, до старта этого канала) теперь наслаждаюсь)
я вот не новичок но не ковырялся в исходниках, с вашей помощью все становится понятно
Да я сам несколько лет, мне кажется, хотел поковыряться в исходниках и вот целый канал завел, чтобы это сделать)
Пожалуй это самые запутанные исходники из тех, в которых я лазил)
При их изучении по ходу разбора явно надо как минимум денек-другой рисовать схемы, чтобы разобраться, как все эти части взаимодействуют друг с другом. Иначе в голове все эти переходы не соберешь в единое целое.
Было бы очень здорово, если бы вы нарисовали подробную схему внутреннего устройства механизма хуков и рассказывали по ней о составлявших деталях этого механизма.
Это видео было скорее ознакомительное) чтобы было вообще представление о том где можно найти исходники. Что под одним хуков кроется несколько функций. И насколько некоторые имплементации хуков (useCallback) могут быть примитивными (за исключение методов mountWorkInProgressHook() и updateWorkInProgressHook(), их можно пока воспринимать как черные ящики, которые возвращают один и тот же объект хука). Поэтому в след видео будем чаще ссылаться на исходники и раскрывать чуть шире этот вопрос. Поэтому оставайтесь на канале и возможно мы сможем хорошо раскрыть вопрос на протяжении N видео)
Ролики можно пересматривать бесконечно и каждый раз ты видишь что то новое) это просто шикарно!
Спасибо) хотя я думаю, что этот ролик не самое лучшее творение))
о, видос с утречка, кайф
@it-sin9k , я немного запуталась)
linked list на 12:10 хранит в себе хуки всего приложения или только одного компонента?
Из этого видео я поняла, что один linked list это место хранения для всего приложения.
Но в каком-то другом вашем видео, была схема дерева и linked list располагался в одной node (кажется так)
а я помню, где то с ошибкой записал) Каждый компонент, хранит в себе linked list его хуков :)
@@it-sin9k отлично, благодарю!
Я любитель перерыть исходники и очень классно когда есть такие видосы, которые подтверждают мысли которые сделал сам исходя из кода.
Возьми конфетку с полочки! Старательный ты наш ))))))))))
Спасибо за видео
Топ🔥🔥🔥
большое спасибо, ты крут !
Отлично видео! Ещё бы чего-то подобного...
Так там еще видео 5-10 с разбором исходников хуков :)
Привет, расскажи про компоненты высшего порядка
А что именно хотелось бы услышать?
@@it-sin9k Уже разобрался)
спасибо
Во накрутили. Что они там курят, в фейсбуке, что такую дичь наворачиваают?
Я колупаллся в исходниках реакта. Там у них дичь, в том смысле, что изначально придумали чепуху, потом подперли костылем то, что болит.
Потом очередным костылем подперли тот костыль, который решал предыдущую боль.
Но снабдили это неплохим интерфейсом, более-менее удобным для юзера, которому под капот лезнь не обязательно.
И каким-то чудом хайпанули!
То же думаю и про редакс. Но редакс - еще большая дичь, потому что интерфейс неудобный.
Там костылей на костылях - вложенный список.
Но чтобы это осознать - надо думать на особом уровне абстракции.
Сениор Реакт девелоперы до такого дойдут лет через 8 - 10 в профессии.
Когда просто сениорами станут, без реакт.
@@olezhonnv3215 А есть какой-то пример годно написаного фреймворка? я просто к тому, что не скатываются ли все фреймворки к такой же дичи)
«Не пишите на ДжаваСкрипт»?
Какую запись прислал подписчик, такую и опубликовали)
@@it-sin9k Понял. Просто странно прозвучало. ЖВ
Спасибо Вам за видео и за ответ! ^^
Может имелось в виду юзайте TS
Ооох слажна =)
+
Интересная задумка, но не думаю, что новички что-то поймут, а программисты с опытом сами в состоянии покопаться в исходном коде. Имхо, если и ковырять исходный код, то было бы интереснее получить более целостное описание архитектуры, а не "здесь такая функция, она берётся из такого файла, а там ещё одна функция etc".
Я думаю этот комментарий можно отнести к многим моим видосам) Новичкам сложно, а опытные и сами разберутся) Поэтому при создании канала мы решили не ориентироваться на новичков, т.к. для них контента и так пруд пруди, а скорее сделать для опытных.
А про опытных я бе не сказал так однозначно. Очень многие программисты из моего окружения или те, кого я собеседовал, не открывали ни разу исходники.
Поэтому, у этого выпуска было 2 цели: первая - это таким людям приоткрыть как это работает изнутри и нет там каких-то супер сложностей разобраться, а вторая - сделать задел на следующие видео, чтобы потом не рассказывать где что лежит и что такое mountWorkInProgressHook :)
Мир не черно-белый, где ты сначала новичок, а один прекрасный момент становишься опытным и легко разбираешься в исходниках библиотек. Посередине есть еще много итераций, когда ты открываешь исходники и пытаешься понять. И подобные видео в этом помогают хотя бы тем, что делятся подходом.
хорошо сказано!)
@@apanchuk здесь уместнее сказать о недетерминированности, тейк про чёрное и белое не для этого. Если человек не дошёл до исходников, значит и смысла ему про них рассказывать нет, значит он ещё не умеет пользоваться абстракцией, следовательно, он не может до конца прочитать документацию и подобные видеоролики с повествованием о цепочке функций ничем ему не помогут, даже подходом.
Думаю причина следственная связь немного нарушается в моменте "значит он ещё не умеет пользоваться абстракцией". Из того что человек не лазит в исходники не значит, что он не умеет пользоваться либой или то что он не прочитал внимательно документацию. Вообще я думаю никто не знает идеально документацию реакта, так она вечно зеленая и огромная кодовая база. У всех можно найти какие то дыры иногда даже в простых местах.
Лично я у себя находил много таких и по сей день нахожу, особенно когда начал заниматься этим каналом, хотя казалось, все просто и понятно, но нюансы вылазят очень часто.
Нимчего не помняв, почиму так все сложно там?
Вообще необходимость открывать исходники, чтобы понять работу программы, - признак плохого дизайна API. Публичные методы должны давать полное подробное представление о своей работе, выдавать ожидаемые результаты.
либо у библиотеки плохая документация) тогда без исходников не разберешься)