Крутая тема, крутое видео! Хуки и реакт вообще больная тема для меня, слишком много ошибок в них делают разработчики, причем любого уровня. Есть еще проблема про меморизацию компонента с children, про это многие забывают. Если передать обычный jsx в children компонента обернутого в memo, то на каждый рендер будет вызываться createElement для этого children, а createElement каждый раз создает новый объект, из-за чего меморизация ломается и добавляет лишний вред для производительности вычислениями меморизации. Еще в контекст многие любят передавать объект, ломая перф всего приложения одной строчкой. Очень круто, что вы поднимаете такие темы.
@webelart2 жыл бұрын
Спасибо за комментарий и за дополнение про children. Закрепляю!
@sergeys47322 жыл бұрын
Так объект можно в useMemo завернуть) не ломая перф никакой
@Владимир.П-е9о2 жыл бұрын
@@sergeys4732 ага, так и надо. Просто для контекстов про это часто забывают, хотя там эта ошибка будет дорогой
@cybersystem51375 ай бұрын
@@Владимир.П-е9о ога, ну или вынести объект за пределы компоненты и угомониться. Потому что тут он константный.
@enjoymtx3 ай бұрын
Какую хорошую вы проделали работу с этим уроком, браво!
@dr_morpho2 жыл бұрын
Как у вас лампово и на лайте, никакой душноты, успехов вам)
@webelart2 жыл бұрын
😘 Спасибо!
@theoty-js2 жыл бұрын
да, и разбор деталей и погружение в технические моменты, нравится мне изучать React вместе с Еленой и ее эмоциями))) Уникальность и оригинальность чувствуется!
@МаксимБондаренко-у3о10 ай бұрын
Феминизация слова "компонент" прошла успешно
@webelart10 ай бұрын
КомпонентА ❤
@АлександрКас-н7з2 ай бұрын
ахахахах)мне тоже слух прям режет)
@k0repan0ff2 жыл бұрын
Спасибо! Очень доходчиво и понятно все объяснено. Приятно смотреть.
@webelart2 жыл бұрын
Я очень рада! 😍☺
@theoty-js2 жыл бұрын
Клёво, что умеешь эмоции включать, так милее уроки получаются) буду изучать хуки, а то пока что знаю о таких как UseEffect и UseState, этого явно маловато ;) благодарю милая)
@webelart2 жыл бұрын
☺️ круто! Спасибо!
@thedeadman1607 Жыл бұрын
Спасибо за видео! Первое видео, в котором наглядно и понятно объяснили в чём разница между useMemo, useCallback и React.memo. Особенно между useMemo, useCallback.
@frontendmaster_7 Жыл бұрын
Спасибо за объяснение нюансов, ни у кого такого не слышал. Сам не сильно люблю использовать useMemo, так как сложно понять где он нужен а где нет. Но после видео теперь понял, где его можно юзать и как.
@sako1313 Жыл бұрын
Спасибо за такое видео, я сколько видео посмотрел по useMemo и по useCallback не понял, а тут прям все понятно, и весь ролик я так кайфовал, как будто АСМР смотрю)))
@muslimm3027 Жыл бұрын
Спасибо Елена, заслуженный лайк и подписка)) просмотрел кучу видео на эту тему, но так доходчиво еще никто не объснял
@SergeyDon2 жыл бұрын
Просто огонь! Просто топ! Как все легко и структурно. Задолбался выковыривать инфу про эти хуки. Везде вроде и по делу и в то же время непонятно, что, когда и где пользовать. Спасибо!
@Mikhail.tortik0012 жыл бұрын
Оооооооо, тема с useMemo и React.memo это топ. А то в инэте в основном инфа по useState и useEffect) Спасибо большое, жду видос про tsconfig.json😄😄
@webelart2 жыл бұрын
Будет следующим видео! ❤
@soldatov_ss Жыл бұрын
Это было исчерпывающее видео, очень круто что разжевали все подробно и все подводные камни изучили. Прям основательный подход Посреди видео поставил лайк и подписался. Зачет
@midlton555 Жыл бұрын
Огромное спасибо! Я сидел с этими темами 4 часа.
@sergsvl Жыл бұрын
Лена, спасибо за разбор работы мемоизации! Я благодаря ему смог разобрался в реальном проекте с проблемой переключения двух компонентов в табах. У тебя такой ситуации не показано и поэтому я долго исследовал исходник либы Antd и код кастомных табов, у нас на проекте, и не мог понять, почему useMemo не работало. Я и пропсы в компоненты отключил и в useMemo обернул, но они перерисовываются при каждом переключении табов и все тут. Но они же, и спропсами, в ANT'e прекрасно мемоизировались. Т.е. отрабатывали по первому разу, а потом брались из кэша. А проблема была в том, что эти компоненты заменяли друг друга в ДОМ при каждом переключении кастомных табов, т.к. брались из пропса (но это не важно в целом). И решение здесь только одно - монтировать в ДОМ сразу оба компонента (при этом они инициализируются тоже оба), а потом переключать их табами через смену стилей: display: none/block. И тогда они рендерятся заново только при реальной смене их собственных пропсов. Твой же компонент FactorialCalculation один раз монтируется в шаблоне и по нажатию на кнопку не удаляется, и поэтому useMemo для него работает. Но результат для меня очень радостный по итогу :))
@awesomexe Жыл бұрын
Обалденный контент. Спасибо! Жаль раньше вас не нашел
@custercuster4918 Жыл бұрын
Большое спасибо за качественный контент, как раз подхожу к хукам, в изучении реакта, видео пришлось как нельзя кстати :)
@DevAccount-rq4ni Жыл бұрын
Супер классное понятное объяснение!! Елена спасибо огромное, крутая подача, продолжайте в том же духе 🔥
@albinasenkova89722 жыл бұрын
Елена, спасибо огромное! Лучшие видео-лекции про веб ❤
@webelart2 жыл бұрын
❤❤❤ Я рада, что материал полезен!
@viktorgusev3701 Жыл бұрын
Круто, смотрю третье видео перед подготовкой к собесам. Спасибо )
@ПожилойФронтендер Жыл бұрын
Спасибо Елена, все круто и понятно, мне понравилось, подписка! Успехов и удачи!!)
@MaxShilov Жыл бұрын
Очень доходчиво объяснила 🔥 Елена, огромная тебе благодарность 🤟🏻
@sergsvl Жыл бұрын
Подача, как всегда - волшебно! :)))
@pherum Жыл бұрын
Какая же ты крутая, Лена!
@webelart Жыл бұрын
☺❤
@bczya18 ай бұрын
Спасибо рекомендациям за ваш канал)
@ЕвгенийНагаев-п9ч2 жыл бұрын
Учу реакт, но ещё не дошёл до этих хуков, изучаю useState, useEffect, use Context. Не смотря на это Лена рассказала очень понятно про useMemo, useCallback и reactMemo. Спасибо за ценную информацию)
@vladimirglazkov79602 жыл бұрын
Елена все краше и краше с каждым видео😊
@webelart2 жыл бұрын
😍 Спасибо!
@rasul7702 Жыл бұрын
Спасибо большое, наконец то я понял эти два хука
@RedShucov2 жыл бұрын
Спасибо большое за видео, очень нравится ваша подача и позитивное настроение Желаю побольше просмотров и развития каналу, вы классная :)
@NikGameChannel23 Жыл бұрын
Спасибо большое Елена, вчера из-за этой оптимизации провалил свой первый собес, а нужно было всего лишь раньше посмотреть ваш ролик и ответить правильно на собеседовании :(
@АлександрКасатов2 жыл бұрын
function sleep(ms) { const timeNow = Date.now(); while (timeNow + ms >= Date.now()); } Такая штука позволяет более наглядно имитировать тяжелые вычисления.
@webelart2 жыл бұрын
Крутой пример!
@benchik1006 ай бұрын
thanks
@damskylizi75322 жыл бұрын
лайк, репост, комментарий для продвижения в топ!
@webelart2 жыл бұрын
❤❤❤
@murcha58992 жыл бұрын
да. недавно как раз именно эта инфа появилась на канале в тг React, буквально несколько дней)
@ledof4 Жыл бұрын
Спасибо за разъяснение, помогло!
@RamaRama-qv3jo Жыл бұрын
Спасибо, очень доступно для понимания !
@ruslanstupak76252 жыл бұрын
Спасибо за видео, как всегда все очень ясно и доступно, но есть один очень большой минус - это очень редкий выход видосов, уж оооочень хотелось бы видеть разные уроки почаще)
@webelart2 жыл бұрын
Спасибо за комментарий! Я стараюсь, стараюсь ребята! 😘❤️
@ruslanstupak76252 жыл бұрын
А ещё очень бы хотелось увидеть именно в твоей подаче видео по настройке вебпака или tsconfigа. Если будет возможность, сделай пожалуйста, буду ну очень тебе благодарен, та и люди, которые тебя смотрят, наверняка тоже обрадовались бы такому материалу
@ЭльнараГайнанова-ф3к Жыл бұрын
Жалко, что нельзя поставить млн лайков ❤
@webelart Жыл бұрын
Спасибо большое!!! ❤❤❤ Рада, что контент нравится! 🥰
@miloman1995s Жыл бұрын
после слов будем использовать хуки useMemo, useCallback и REACT.MEMO...... REACT.MEMO Карл, реакт мемо - это хук , Карл... захотелось выключить) надеюсь оговорка, щас посмотрим дальше
@catsoftheworld Жыл бұрын
Умничка! Спасибо за видео❤
@ИгорьГреков-я6в2 жыл бұрын
спасибо за урок и хорошее настроение)
@webelart2 жыл бұрын
Пожалуйста! 🥰❤ Рада, что урок понравился!
@VolhaValaskevich Жыл бұрын
Спасибо большое!!! Супер!
@nth-prog8562 Жыл бұрын
Что может быть лучше, когда красивая женщина учит тебя как пользоваться своим инструментом)
@angelicoctahedron3646 Жыл бұрын
Что может быть лучше? Ну вот миллион долларов, например, лучше.
@top-mma-news2 жыл бұрын
Интересно было послушать, благодарчик
@MrCortc2 жыл бұрын
0:00 Я тоже в свое время плакал когда все это изучал и наконец разобрался... Какими же дегенератами надо быть чтобы все так запутать. Нам рассказывают какой реакт классный и быстрый... Но когда ты сталкиваешься с реальностью на боевых проектах. Когда у тебя нет выхода кроме как поддерживать распиаренные плагины типа formik, в котором на серьезных формах с валидацией начинает тормозить обычный ввод текста в инпут, и ты понимаешь, что ничего сделать не можешь, потому что изначально архитектура этих решений такая...
@MisaNia252 жыл бұрын
Классно развиваетесь
@MukhammadAkilov2 жыл бұрын
Спасибо за видео, все круто и информативно! Единственное, в некоторых местах советуют не класть компоненты в служебную папку pages в Next.js)
@webelart2 жыл бұрын
Вроде туда только стили положила. Вообще да, это же папка для роутинга
@webelart Жыл бұрын
@@ReAgent003Эх, пока в Лондоне. Но Яндексу сердечки! ❤
@aximas7782 жыл бұрын
useMemo - я использовал когда создавал свой кастомный хук связанный с пагинацией (usePagination) т.к. там велись расчёты и возвращались 4 разные значения
@ГусяНоздреватая2 жыл бұрын
Учусь в уральском вузе и мечтаю уехать в Лондон, чтобы стать таким же весёлым и жизнерадостным, как Елена)
@webelart2 жыл бұрын
Желаю, чтобы всё у вас получилось! ❤
@webelart2 жыл бұрын
Главное учитесь, вкладывайтесь, идите к мечте и желанию, и оно точно исполнится!
@wizardoflightnings6841 Жыл бұрын
Елена, а Вы просто Software Engineer или Mistress Software Engineer? 🙂 (Senior)
@magomedaminov45832 жыл бұрын
👍👍👍
@angelicoctahedron3646 Жыл бұрын
Если не хотите перерендеривать компонент не имеющих пропсов вообще (или же они не меняются по ходу программы) - вместо memo лучше вытащить в константу: function FHome() {} export const FhomeComponent = ; И соответственно везде использовать {FhomeComponent} вместо . useCallback и useMemo можно зачастую тоже избегать, просто вытаскивая объявление функции в родительский компонент. Например, есть Child, который часто перерендеривается: function Child(props) { const time = useInterval(100); //типо кастомный хук, из-за которого этот комопент будет перендериваться каждые 100мс. const heavyResult = useCallback(() => heavyCalc(props.foo), [props.foo]); } Вместо useCallback можно разбить его на два компонента: function Parent(props) { const heavyResult = heavyCalc(props.foo); return }
@webelart Жыл бұрын
Почему вы решили, что такой компонент не будет перерендериваться?
@angelicoctahedron3646 Жыл бұрын
@@webelart Это достаточно легко проверить! В вашем примере вы использовали Home = memo(Fhome). Соответственно, если где-то использовать , он перерендериваться не будет, ведь будет возвращена мемоизированная версия. Однако это можно заменить на следующую конструкцию: создать глобальную константу export const HomeComp = ; Если где-то использовать {HomeComp}? то он точно так же не будет перерендериваться. Почему? Потому что конструкция '' была вызвана только один раз, при объявлении глобально переменной.
@webelart Жыл бұрын
@@angelicoctahedron3646 Так вы проверяли? Почему спрашиваю, потому что перерендеринг будет.
@webelart Жыл бұрын
@@angelicoctahedron3646 Все компоненты, которые вы задействуете внутри, если они не мемоизированы, будут перерендерены и не важно как вы их импортируете, вынесете или не вынесете.
@angelicoctahedron3646 Жыл бұрын
@@webelart вот простой пример. redraw вызывается только один раз, при маунте компонента. И не вызывается при обновлении родителя. import React from 'react'; function Child() { console.log('redraw'); return Hello } const globalChild = ; export function App(props) { const [count,setCount] = React.useState(0); return ( {count} setCount(count +1)}> {globalChild} ); } Как видите, компонент не пришлось оборачивать его в memo. memo будет полезно когда у компонента меняются пропсы - но для propless компонентов (либо компонентов, чьи пропсы не меняются в ходе программы) его использование не имеет смысла. А магии здесь нет. Конструкция `` транслируется бабелом в createElement(Child). То есть получается, что эта функция будет вызываться каждый раз когда компонент рендерится. Но мы можем этого избежать: если будем передавать компонент через пропы (обычно через children), глобальные переменные, или используя memo.
@mike-aaa9 ай бұрын
А вот если я у родителя обернул onClick в usecallback И передал в дочернюю кнопку (как единсвенный параметр), которая обычная безе memo Она все равно перерендерится? Т.е зачем делать usecallback??? если я не делаю memo??
@tutnichegonet2 жыл бұрын
можешь по простому объяснить что такое pure component? а то ты много раз его в видео упоминаешь)
@webelart2 жыл бұрын
Да, я под Pure компонентой имела ввиду компоненту обёрнутую в React.memo.
@Vasilika Жыл бұрын
Хороший урок! Очень позитивно и полезно, про злободневные штуки при React разработке.
@sharkman6434 Жыл бұрын
Проходил тестовое и была задачка оптимизировать ререндер в 3 компоненте чтоб при вводе в инпут не происходил ререндер, нужно было обернуть ончейнж в 1 компоненте юзколлбеком и 1 компонент обернуть реакт мемо хоком
@webelart Жыл бұрын
Спасибо что поделились! Но вы в будущем пишите нормально называя, раза три пришлось перечитать, чтобы понять ❤️
@sharkman6434 Жыл бұрын
@@webelart ок спасибо, Елена снимите пожалуйста видео про стадии рендера компонентов в реакт, почему например юзеффект в чилдрене отработет перед таким же в родителе, на собесах на мидла такое спрашивали. И если в див родителя передать коллбек с рефом и консоль логом почему оно срабатывает до рендера чилдрена. Спасибо и развития вам и вашему каналу !
@karoche-tv2 жыл бұрын
Про useReducer, useContext тоже будут?
@webelart2 жыл бұрын
Сделаю 👍
@jamjam3337 Жыл бұрын
💥💥💥
@ИгорьАгаларов2 жыл бұрын
Пришёл посмотреть МЕМЫ, в итоге изучил хуки)
@karoche-tv Жыл бұрын
Здрасте, у меня не работает memo в реактнатив. Короче есть Parent.js внутри есть передающее это состояние в дочерний function SearcResult (){ const typeState= useState (null); const root = useRoute() const {from, destination} = props.params //props.params приходит из useRoute. return ( ) } function UberTypes({typeState, }){ //import types from './assets/types.js const [type,setType]= typeState const onClick = (){ setType(type) } // return ( ) } Ну здесь я обернул React.memo( RuoteMap.js )потому что он неизменяется просто показывает картка и какую то анимацию после загрузки один раз и просп Стейт нечего не меняет. А тот UberTypes меняет тип при нажатии на на каждый UberTypesRow. Что я не правильно делаю? Но
@volselongames45052 жыл бұрын
Привет, а не подскажешь как правильно именовать css модули при импорте их в jsx: import вЭтомМестеКакПравильноИменовать from './КакойТоМодуль.module.css';
@webelart2 жыл бұрын
Да, это для nextjs
@volselongames45052 жыл бұрын
@@webelart нет это для react, фронтенд часть
@Kleo_Wyatt Жыл бұрын
Наверное мой ответ уже будет не актуален, но если я правильно поняла, то можешь называть как тебе удобно или как на проекте надо, но часто вижу, что называют просто styles.
@volselongames4505 Жыл бұрын
@@Kleo_WyattПривет, да уже не актуален, но всё равно спасибо большое за потраченное время на меня, успехов вам
@АлександрВидин-с6я2 ай бұрын
Не думаю, что использовать хуки по ощущения правильно. Но спасибо за объяснения
@MisaNia252 жыл бұрын
Что по RoadMap?
@webelart2 жыл бұрын
Ещё не сделала 😔 Поможете сгруппировать видео?
@MisaNia252 жыл бұрын
@@webelart да конечно, помогу
@olesyapastushenko685 Жыл бұрын
Как мне не хватало девочек тьюторов! : *****
@timwin47 Жыл бұрын
сверх оптимизация...точней что memo требует тоже ресурса а его ресурс так же является память... используем бывает в местах где нет необходимости запоминать.
@wellemangrey36452 жыл бұрын
Я может глупость спрошу, но почему бы не использовать эти хуки для запросов на сервер (fetch, или axios) ? Для некоторых данных не обязательно каждую секунду отправлять запрос на сервер, узнавать как там дела, не изменилось ли что-нибудь. Я к тому, что отправил запрос в бекэнд, получил данные, записал в стейт, и уже с этим стейтом работаешь, не перевызывая запросы на сервер (не говоря уже о том, что от сервера нужно ещё дождаться этих данных). Чем -не ресурсоёмкое- занимающее время выполнение? Почему для этих нужд не используется _useMemo_ ?
@webelart2 жыл бұрын
Отличный вопрос! ❤️ Для этих нужд используется useEffect с пустыми скобками.
@АртурЦебаев Жыл бұрын
memo же можно также, как и хуки имортить и писать без React
@404russ2 жыл бұрын
ты как будто дунула немного перед записью,без обид) я твой фанат
@webelart2 жыл бұрын
Ахахаха, 😂 Я тут уже писала, не пугайте мою маму. Она меня смотрит. P.S. Мамуль наркотой не страдаю!! ЧЕСТНОЕ СЛОВО!! Люблю тебя ❤
@webelart2 жыл бұрын
Максимум, что я пью, курю, дую! Это программирование. 💃 Так что дорогие мои подписчики, давайте вместе под ПРОГРАММИРОВАНИЕ! 😎 ААХАХ или ЗА программирование. 🤭❤🔥
@shanthakobyan34512 жыл бұрын
UseDefferedValue and UseTransition hooks please 🙏
@Koal-e1d Жыл бұрын
Спасибо за информацию Но режет слух слово проПСЫ Что ещё за псы) Хотя судя по наличию видео урока про галерею с волками, видимо человек как раз любит псов) А я говорю прОпсы
@webelart Жыл бұрын
Хаха, не я не очень люблю собак. Я кошатница.
@eleukhin10 ай бұрын
А не проще так экспортировать: export default React.memo(SomeComponent); без дополнительных именований
@webelart9 ай бұрын
Не имеет значения. Зависит от того как у вас линтер в команде настроен.
@hasegawataizou50382 жыл бұрын
В начале думал Она бухая.Но поняв что я без работы , и травмы. Понел что я никто
@webelart2 жыл бұрын
😂😂 Я вообще не пью! Мой эмоциональный импакт этого не требует вообще...😁 Да и настроение разное. Ещё иногда хочется в видео, чтобы барьеры над сложностью материала снимались. Было интересно, весело и дружелюбно. ❤
@webelart2 жыл бұрын
Кстати и да, ещё хотела написать! Вы тут поаккуратнее с такими комментариями, меня мама смотрит! 😎 В прошлый раз мне пришлось убеждать, что я не под наркотой тут в Лондоне, без присмотра😅😅
@hasegawataizou50382 жыл бұрын
@@webelart Незнаю как ответит на этот вопрос Ты ведь взрослая а Мой коммент Жизнейщая жизабенейшая своя логика и своя правда
@webelart2 жыл бұрын
@@hasegawataizou5038 Я просто решила пошутить, всё нормально 😂😂 Пишите разные комменты! Я серьёзно, как чувствуете! Это очень КРУТО! А маме я просто передаю привет. Мамуль, если ты это читаешь, люблю тебя безмерно, со мной всё хорошо ❤🙃
@hasegawataizou50382 жыл бұрын
@@webelart а я уже начел думать что со мной что то не так
@asaturhakhverdyan5446 Жыл бұрын
накуренная ?😀😀😀😀 класс видео
@webelart Жыл бұрын
😂 Я не курю...
@romasbitinas6432 жыл бұрын
Было бы здорово услышать о том как правильно делать http запросы useffect!
@dmitry33ful2 жыл бұрын
Слишком симпотная.
@webelart2 жыл бұрын
😍💃Спасибо!! Очень приятно!!!
@dmitry33ful2 жыл бұрын
@@webelart Просто правда.
@alexeyfilippov42 Жыл бұрын
у сайта loveholidays огромные проблемы с версткой)
@webelart Жыл бұрын
Конкретику дадите?
@alexeyfilippov42 Жыл бұрын
@@webelart на мобильном есть небольшой scroll-x
@webelart Жыл бұрын
@@alexeyfilippov42 Скажите какая страница и какое у вас разрешение экрана? Пофиксим!
@island1345 Жыл бұрын
Рекурсия - тяжелая функция🤡🤡 завязывай
@webelart Жыл бұрын
Давай ты уж сам себе шнурки как-нить завяжешь 😉
@miloman1995s Жыл бұрын
4:07 - хуки useMemo и useReact..... боже.... я понимаю что все могут оговориться, но это не значит что надо оставлять такой материал... новички посмотрят и реально будут искать хук useReact... ну проверяйте свой контент перед тем как выкладывать, это не дело
@webelart Жыл бұрын
Вы чего так тригеритесь, ну оговорилась, а у вас словно Солнце на Землю упало. Нормально всё. Расслабьтесь и наслаждайтесь контентом. 😘
@Anonym-li8eb8 ай бұрын
Душнила
@Antonym-b5o11 ай бұрын
если честно, проще доку почитать, ничего не понятно
@webelart11 ай бұрын
Прочитайте доку, после возвращайтесь для наглядных примеров❤
@maximkalenkovich5 ай бұрын
так чтобы получить самую достоверную инфу- только доку и нужно читать, а не смотреть видосы от джунов)
@Niachan6662 жыл бұрын
Ну слабенько как-то про то, где надо, а где нет. Делать по ощущениям, это не совет. Только ради этого по сути и смотрел, а тут ничего нового.
@webelart2 жыл бұрын
Да, ладно вам, не расстраивайтесь! :) Но в тоже время я понимаю вас, мне кажется было бы здорово как-то через профилирование пройти и чтобы конкретные кейсы были и исследование, тогда это было бы огонь. Мне здесь ещё подрасти тоже надо и опыта набраться. Как только нахватаюсь кейсов побольше, уверена сниму ещё видео. ❤
@webelart2 жыл бұрын
Кстати если вдруг увидите видео с хорошим объяснением профилирования и сравнения с мемоизацией, тоже кидайте!
@cybersystem51375 ай бұрын
КомпоненТ. Не ТА, Т! Зачем коверкать?
@cybersystem51375 ай бұрын
Понятно, что это пример, но если объект константный - его вообще выносят за пределы компонента и все. Никаких мем не нужно - это жирно сильно.
@enjoymtx3 ай бұрын
возьми с полочки пирожок, ты умничка. а если будет ещё что-нибудь - обязательно заходи за вторым пирожком
@cybersystem51373 ай бұрын
@@enjoymtx ты главное побольше запасись ими, я еще за третьим приду и четвертым
@evgeniy33702 жыл бұрын
Привет, когда стрим ?
@webelart2 жыл бұрын
Уже был на канале Алгосиков с Виктором kzbin.info/www/bejne/iXvIgpqJmd5pic0. Хотите ещё? :)))
@evgeniy33702 жыл бұрын
@@webelart Ну это вам тогда опрос надо устроить на стёт проведения нового стрима). Я это всенда за) всякий движ)