Станет ли memo() дэфолтным поведением реакт компонента?

  Рет қаралды 8,004

АйТи Синяк

АйТи Синяк

Күн бұрын

Пікірлер: 59
@MrOzziris
@MrOzziris 3 жыл бұрын
Бро, у тебя отличный контент! Не останавливайся плиз =)
@it-sin9k
@it-sin9k 3 жыл бұрын
мы не планируем останавливаться) главное поддерживайте проект разными способами) лайк / репост / обсудите с коллегами / поделитесь в соц сетях / patreon) Все это нас очень мотивирует продолжать)
@almazkaliyev
@almazkaliyev 3 жыл бұрын
@@it-sin9k коллегам отправил уже)
@it-sin9k
@it-sin9k 3 жыл бұрын
спасибо!)
@Dmitriy-bq2xh
@Dmitriy-bq2xh 3 жыл бұрын
Привет, спасибо за твой труд, очень актуальная тема. В продолжении, может порассуждаем на тему "следует ли оборачивать ВСЕ функции передаваемые в качестве пропсов в useCallback?"
@it-sin9k
@it-sin9k 3 жыл бұрын
спасибо!) данное рассуждение уже есть на канале в видео "что вы знаете о useCallback" kzbin.info/www/bejne/aIjTaISGidCjo9U
@valeriipimenov4894
@valeriipimenov4894 3 жыл бұрын
Прекрасно !!! Очень очень качественно !)
@it-sin9k
@it-sin9k 3 жыл бұрын
спасибо!) похвала это всегда приятно после публикации))
@user-eq7fu9sd5z
@user-eq7fu9sd5z 3 жыл бұрын
Блин, а я даже не задумывался об этом. Спасибо ^^
@it-sin9k
@it-sin9k 3 жыл бұрын
Для этого и существует, этот канал) чтобы обратить внимание на такие вопросы)
@andreyalexandrov2067
@andreyalexandrov2067 3 жыл бұрын
какой крутой блог у Эриксена. странно, что раньше на него не попадал. спасибо!
@it-sin9k
@it-sin9k 3 жыл бұрын
we are connecting people)
@AbraKadabra000
@AbraKadabra000 3 жыл бұрын
5:45 вот тут очень запутанно кто будет а кто не будет, и почему. Наверное стоило бы сделать zoom-in и показать почему.
@it-sin9k
@it-sin9k 3 жыл бұрын
возможно :) я надеялся, то что голосом явно проговорил, будет достаточно)
@evisotskiydev
@evisotskiydev 3 жыл бұрын
@@it-sin9k ты говоришь - "MemoChildren всегда будет новым инстансом массива". Какого массива?
@it-sin9k
@it-sin9k 2 жыл бұрын
Я сейчас еще пере тестировал. Массив у меня приходил, когда я передавал 2 и более элемента в children. Поэтому в видео я немного видимо преврал. В случае 1 элемента это объект, а в случае нескольких children возвращает массив.
@underpog5347
@underpog5347 3 жыл бұрын
канал на котором не возможно поставить дизлайк
@it-sin9k
@it-sin9k 3 жыл бұрын
серьезное заявление)) спасибо!)
@AbraKadabra000
@AbraKadabra000 3 жыл бұрын
Крутецкий уникальный контент на русском ютубе !
@it-sin9k
@it-sin9k 3 жыл бұрын
спасибо!) не забудьте подписаться на выход новых выпуском (нажать на колокольчик) :) контент выходит не часто, но никакого спама)
@muratx10
@muratx10 3 жыл бұрын
Спасибо большое 💪
@it-sin9k
@it-sin9k 3 жыл бұрын
рады стараться)
@nikto5878
@nikto5878 3 жыл бұрын
Годнота
@it-coding
@it-coding 3 жыл бұрын
Врапеер перестает перерендериваться , если завернуть вызов компонента с пропсами в useMemo() )) const memoChildren = useMemo(()=>,[]) {memoChildren}
@it-sin9k
@it-sin9k 3 жыл бұрын
да, абсолютно верно. Всегда можно выкрутиться)
@viktorsoroka4510
@viktorsoroka4510 3 жыл бұрын
Не совсем уловил суть здесь и как это решает ишью с озвученным в видео новым инстансом массива для children.
@it-sin9k
@it-sin9k 2 жыл бұрын
я немного ввел в заблуждение с массивом. Это не совсем правда. Я готовясь к докладу все пере тестировал. Оказалось, что если children 1, то он возвращает обхект, а если 2 и более то возвращает массив. А заставляется рендерится MemoWrapper, только по причине, того что React.createElement() создает новый объект при каждом рендере.
@it-coding
@it-coding 2 жыл бұрын
@@it-sin9k а Если каждому компоненту присвоить Key , будет ли это не массив а Object с ключом = Key ? Смотрел доклад, что с ключами меняется структура данных , и сравнение идет не по индексам массива , а по ключам и значениям
@it-sin9k
@it-sin9k 2 жыл бұрын
Думаю не будет. Если сделать console.log любого компонента, то вы увидите, что key это свойство внутри узла.
@AndreyEricksonGame
@AndreyEricksonGame 3 жыл бұрын
Не совсем понял этот момент Почему MemoWrapper будет перерендериваться, раз он Memo? Я не совсем понял фразу про 'инстанс массива'. Синяк, помоги плиз разобраться)
@it-sin9k
@it-sin9k 3 жыл бұрын
Идея в следующем MemoWrapper это компонент, который получает props children, и этот children ни что иное как массив. Он всегда массив. Он даже переводится как "дети", т.е. он назван ни child, а children. Мы же можем передать туда больше детей: Таким образом MemoWrapper получает в качестве children следующий массив [MemoChildWrapper, OneMoreComponent]. И получается даже если внутри этого массива, ссылки на компоненты MemoChildWrapper и OneMoreComponent останутся прежними, то сам массив, в котором лежат эти ссылки будет, будет новым (так реализован React, что массив всегда будет новым). А memo сравнивает по принципу shallowEqual, т.е. он проверит, что ссылка на массив изменилась и не важно, что контент в массиве остался прежним Надеюсь хоть немного стало понятнее ЖВ
@AndreyEricksonGame
@AndreyEricksonGame 3 жыл бұрын
@@it-sin9k Спасибо большое, за развернутый ответ) Стало более понятно
@orucqarayev4759
@orucqarayev4759 Жыл бұрын
@@it-sin9k блин тот же вопрос был, но как круто разьяснил))
@it-sin9k
@it-sin9k Жыл бұрын
@@orucqarayev4759 Спасибо)
@romandeveloper7720
@romandeveloper7720 Жыл бұрын
@@it-sin9k , ты топ!) Я тоже сначала не понял, сейчас вопросы отпали)
@mtyEyes
@mtyEyes 3 жыл бұрын
"Ты заявляешь такие есерьезные вещи. Но ты делаешь это без ссылок" - по-моему такое было в крестном отце. Там еще кого-то за это убили
@it-sin9k
@it-sin9k 3 жыл бұрын
ахахахха))) надеюсь у нас все выживут))
@romandeveloper7720
@romandeveloper7720 Жыл бұрын
@@it-sin9k выжили?
@it-sin9k
@it-sin9k Жыл бұрын
@@romandeveloper7720 нас двое и мы по прежнему публикуем новые видео) пока все окей)
@hyposlasher
@hyposlasher 2 жыл бұрын
Остается другой вопрос: зачем реакт ререндерит компонент без пропсов и чилдренов, если перерендерился родитель? Там даже сравнивать нечего же.
@it-sin9k
@it-sin9k 2 жыл бұрын
Хороший вопрос :)
@hyposlasher
@hyposlasher 2 жыл бұрын
@@it-sin9k многие думают что реакт это магический чёрный ящик. А по факту реакт просто вызывает каскадно все функции-компоненты вниз по дереву до последнего чилдрена, где пропсы это параметры функции. Запись это то же самое что {Foo({value: “1”})}. Можешь сам проверить)
@it-sin9k
@it-sin9k 2 жыл бұрын
Звучит очень реалистично) вот потихоньку ковыряюсь в исходниках и делюсь на канале к чему пришел)
@hyposlasher
@hyposlasher 2 жыл бұрын
@@it-sin9k серия видосов очень крутая. Хотелось бы ещё про useState видос)
@it-sin9k
@it-sin9k 2 жыл бұрын
там исходники сложнее) тяжелее это рассказать, но я постараюсь вернуться к этому)
@viktorsoroka4510
@viktorsoroka4510 3 жыл бұрын
4:31 так ишью закрыто ж🙂
@it-sin9k
@it-sin9k 3 жыл бұрын
странно получилось))) я видимо когда первый раз смотрел, issue было еще открыто или почему я так решил, не помню уже))
@kinderhero8897
@kinderhero8897 3 жыл бұрын
автор этого поста ёмаё. Это сам Марк Эриксон)
@it-sin9k
@it-sin9k 3 жыл бұрын
:D
@kinderhero8897
@kinderhero8897 3 жыл бұрын
@@it-sin9k можешь кстати сделать видео на основе его статей. Он рендеринг круто объясняет там, например
@KycokFt
@KycokFt 3 жыл бұрын
Тогда интересно, а почему бы не сделать мемо по умолчанию, но с возможностью отключать эту проверку где это необходимо (где shallowEqual всегда будет возвращать false) 🧐
@it-sin9k
@it-sin9k 3 жыл бұрын
я думаю, что такое сделать можно. Но есть пара нюансов. Первое такой подход уже есть, и ресурсы можно направить на что-то другое, что принесет больше профита. А с другой стороны. Это как VSCode и Jetbrains продукт. В одном ты добавляешь плагины, чтобы все настроить. А в другом, ты зачастую отключаешь много чего, чтобы работало как ты ожидаешь. Видимо подход подключать плагины им больше нравится)
@KycokFt
@KycokFt 3 жыл бұрын
@@it-sin9k исчерпывающе, спасибо )
@ДаниилЧервяков-е6ц
@ДаниилЧервяков-е6ц 2 жыл бұрын
и в 18 не сбылось
@it-sin9k
@it-sin9k 2 жыл бұрын
ага)
Все ли вы знаете о React key?
8:47
АйТи Синяк
Рет қаралды 37 М.
Какая настоящая цена useMemo?
10:29
АйТи Синяк
Рет қаралды 26 М.
Что вы знаете о useCallback?
10:02
АйТи Синяк
Рет қаралды 48 М.
Dependency Inversion || storage package
10:02
АйТи Синяк
Рет қаралды 16 М.
15 cm это много | Alina Rin
2:33
Jötunn
Рет қаралды 1,2 МЛН
Почему удалять StrictMode плохая идея?
9:30
АйТи Синяк
Рет қаралды 17 М.