Что выбрать: глобальные переменные или useThis()?

  Рет қаралды 11,636

АйТи Синяк

АйТи Синяк

Күн бұрын

Пікірлер: 46
@ITKAMASUTRA
@ITKAMASUTRA 3 жыл бұрын
Очень крутые видео на канале, структурированность, подача, анимации - всё на высоте! ✊
@it-sin9k
@it-sin9k 3 жыл бұрын
Спасибо!) Мы очень стараемся)
@muratx10
@muratx10 4 жыл бұрын
Спасибо за полезный контент. 🔥
@it-sin9k
@it-sin9k 4 жыл бұрын
Всегда к вашим услугам)
@spoonjeee4785
@spoonjeee4785 4 жыл бұрын
Спасибо!
@АнатолийГорбов-о1ь
@АнатолийГорбов-о1ь Жыл бұрын
Согласен, отличный канал, очень много полезного и интересного!
@НикитаГончаров-е8ш
@НикитаГончаров-е8ш 2 жыл бұрын
Огонь🔥🔥🔥
@vitaliyyasinskiy3689
@vitaliyyasinskiy3689 2 жыл бұрын
1:31 а разве синтаксис spread на 12 строке в данном случае не будет вызывать лишние ререндеры? Ведь spread всегда возвращает новый массив
@mikhailstepanischev8316
@mikhailstepanischev8316 3 жыл бұрын
Класс,спс !
@serhiiazizov2303
@serhiiazizov2303 3 жыл бұрын
Спасибо большое за проделанную работу. В вашем случае можно через переменную вместо useRef. export default () => { let timeout = null; const onClick = () => clearTimeout(timeout); useEffect(() => { timeout = setTimeout(() => { console.log('===>') }, 3000); }, []); return stop timer }
@it-sin9k
@it-sin9k 3 жыл бұрын
Почти могу согласиться. Представьте, что произошел render, вызвался useEffect, в переменную timeout положили timeoutId. И действительно при клике timeout очистился бы. НО допустим за эти 3 секунды по какой то другой причине произошел render. Это значит, что создалась новая переменная timeout, заново создался onClick завязанный уже на новый timeout и передался в button. А ссылка на старый timeoutId будет утеряна. И если пользователь нажмет после рендера на кнопку, тогда старый timeout не очиститься и setTimeout отработает. Поэтому такой способ крайне рискованный. Лучше использовать useRef
@serhiiazizov2303
@serhiiazizov2303 3 жыл бұрын
@@it-sin9k согласен. Спасибо.
@VeaceslavBARBARII
@VeaceslavBARBARII Жыл бұрын
зис - zees вис/вьэс - this виз - these уиз - whiz Cпасибо за видео.
@cikada3398
@cikada3398 4 жыл бұрын
лайк не глядя
@it-sin9k
@it-sin9k 4 жыл бұрын
но лучше все таки посмотреть))))
@sergeykhairulin
@sergeykhairulin 2 жыл бұрын
1:14 почему в setStateCounter передается стрелочная функция, а не просто значение stateCounter+1 ? Так тоже можно делать?
@it-sin9k
@it-sin9k 2 жыл бұрын
Да, можно делать. Я не помню почему такой синтаксис выбрал честно говоря, но разницы никакой нет)
@aboba86468
@aboba86468 2 жыл бұрын
​@@it-sin9k А точно нет разницы? Ведь в самой доке по useState приведён именно такой пример с функцией, которая принимает prevState. Как я понимаю это нужно из-за того, что setState асинхронный, и никогда нельзя доверять предыдущему значению вот так просто напрямую. Хз, может, если мы больше нигде не изменяем это значение, то разницы никакой. Но для меня не проблема написать чуть лишнего, предохранив себя от трудновоспроизводимых багов. Если я не прав, и есть какое-то чёткое объяснение, то тыкните плз)
@avisalon4730
@avisalon4730 3 жыл бұрын
Круть!
@it-sin9k
@it-sin9k 3 жыл бұрын
Спасибо!)
@la-vallet
@la-vallet 4 жыл бұрын
В одном из предыдущих видео говорилось, что планируется тема о UiKIt. Можно ли её ожидать в ближайшем времени? Было бы очень интересно) Спасибо за Ваши видео!
@it-sin9k
@it-sin9k 4 жыл бұрын
у нас была проба одно видео, перевести тему с js на работу с темизацией, kzbin.info/www/bejne/bam7dX-cnMRgh80 судя по количеству просмотров люди не захотели смотреть
@trustlang_ua
@trustlang_ua 4 жыл бұрын
давай видос про глобальный стейт (redux, mobx, effector etc) и что лучше для чего подходит
@it-sin9k
@it-sin9k 4 жыл бұрын
Спасибо, что оставляете комментарии!) Запросов достаточно много, на разные тему, поэтому в твитере я устраивал голосовалку, где собрал разные темы, которые можно было бы раскрыть) И после окончания темы хуков, мы перейдем на патерны. А потом снова устроим голосовалки уже только в youtube и в твитере, сумируем голосва)
@trustlang_ua
@trustlang_ua 4 жыл бұрын
@@it-sin9k спасибо за ответ)
@g0ld3nsecr3t6
@g0ld3nsecr3t6 3 жыл бұрын
Обычно с timeout я использовал useState, где [timeout] = useState({value: null})
@it-sin9k
@it-sin9k 3 жыл бұрын
надеюсь теперь будете использовать useRef() :)
@g0ld3nsecr3t6
@g0ld3nsecr3t6 3 жыл бұрын
@@it-sin9k , но и моё решение имеет право на существование, верно?) Стало любопытно, т.к вы упомянули слово "надеюсь" :)
@it-sin9k
@it-sin9k 3 жыл бұрын
я какое-то время назад уже принял, что большинство решений имеют право на жизнь) Просто в одном решении у тебя одни преимущества и недостатки, а в другом другое) Почему я бы не пользовался вашим решением, это потому что state если передавать через props, и timeout значение изменится, в таком случае вы получите рендеры дополнительные) В случае с ref вы не получите дополнительные рендеры) для меня это важно и поэтому я бы не стал использовать) но это маловероятно, что вы почувствуете просадку по перфомансу) поэтому в рамках сайтах всем без разницы такие мелкие экономии))
@-X-Ray-
@-X-Ray- 4 жыл бұрын
Сколько же тайн хранит react :)
@it-sin9k
@it-sin9k 4 жыл бұрын
Мы постараемся еще парочку раскрыть)
@-X-Ray-
@-X-Ray- 4 жыл бұрын
@@it-sin9k буду с нетерпением ждать)
@andTutin
@andTutin 3 жыл бұрын
А в чем тайна ?
@Shperung
@Shperung 2 жыл бұрын
Дякую вельми корисно
@nikitakurochka2752
@nikitakurochka2752 4 жыл бұрын
А есть в планах записать урок по поводу react portal ?
@it-sin9k
@it-sin9k 4 жыл бұрын
хмм, а что именно непонятно в портале? Принцип его работы? Способы использования?
@nikitakurochka2752
@nikitakurochka2752 4 жыл бұрын
@@it-sin9k Как его можно красиво применять)
@it-sin9k
@it-sin9k 4 жыл бұрын
спасибо за комментарий, я подумаю пособираю еще отзывы)
@bakaleisanich
@bakaleisanich 3 жыл бұрын
а можно сразу делать так? let type = useRef('').current и потом сразу присваивать так type = ...
@it-sin9k
@it-sin9k 3 жыл бұрын
Можно так делать, но есть пара нюансов. Если ты хочешь пробрасывать child компоненту это значение, а он memo компонент, тогда ты можешь вызвать дополнительные рендеры. Тоже самое и с хуками, если ты используешь useEffect и внутри будешь использовать такой type. Тогда eslint правило будет просить добавить такой type в зависимости, а если бы ты не достал сразу значение, то не просил бы. Поэтому, чтобы не встревать в такие ситуации я для себя решил, не использовать такой синтаксис
Какая настоящая цена useMemo?
10:29
АйТи Синяк
Рет қаралды 27 М.
To Brawl AND BEYOND!
00:51
Brawl Stars
Рет қаралды 17 МЛН
My scorpion was taken away from me 😢
00:55
TyphoonFast 5
Рет қаралды 2,7 МЛН
黑天使只对C罗有感觉#short #angel #clown
00:39
Super Beauty team
Рет қаралды 36 МЛН
🚀 JavaScript Like a Pro: Essential Tips & Tricks!
3:36
Najib Digital
Рет қаралды 5
Новые возможности React с useDeferredValue
11:06
АйТи Синяк
Рет қаралды 15 М.
Вы НЕ умеете замечать ЗНАКИ и ПОДСКАЗКИ от жизни
20:54
МАРГУЛАН СЕЙСЕМБАЙ
Рет қаралды 292 М.
Все ли вы знаете о React key?
8:47
АйТи Синяк
Рет қаралды 39 М.
КАК УСТРОЕН TCP/IP?
31:32
Alek OS
Рет қаралды 285 М.
To Brawl AND BEYOND!
00:51
Brawl Stars
Рет қаралды 17 МЛН