MatchMedia для определения типа устройства

  Рет қаралды 13,269

Михаил Непомнящий

Михаил Непомнящий

Күн бұрын

Определяем размер экрана через кастомный хук и показываем контент по условию в React-приложении.
Ссылки из видео:
- matchMedia на MDN developer.mozi...
- npm пакет use-match-media github.com/jep...
- код кастомного хука codesandbox.io...
#js
Мои курсы по вебу с купонами:
✅ mishanep.com/
📢 Поддержка канала:
/ mishanep
www.tinkoff.ru...
paypal.me/mish...

Пікірлер: 36
@mishanep
@mishanep 2 жыл бұрын
Если вы пишите тесты в своих приложения, то, во-первых, это очень хорошо =) А во-вторых, чтобы тестировать метод matchMedia и корректность его работы рекомендую поставить библиотеку *mock-match-media* .
@sadmoment6716
@sadmoment6716 2 жыл бұрын
БЛ, Сейчас искал свой старинный детский канал(я когда малой был пробовал снимать видео) нашел своего однофамильца с таким же именем как и у меня) Хоть даже название канала не совпадало с названием твоего
@ri4an598
@ri4an598 2 жыл бұрын
@@sadmoment6716 еще есть шахматист - Ян Непомнящий)
@boycovclub
@boycovclub 2 жыл бұрын
Кто-то получает кайф от сериалов, кто-то от порнухи )) а я получаю кайф, когда вижу как пишут красиво код и объясняют. Я уже 2 года работаю, но до сих пор голоден ))
@user-fs1pm5oe5s
@user-fs1pm5oe5s 2 жыл бұрын
Супер, Михаил, спасибо за то что Вы делаете! Максимально качественно и максимально полезно! Не раз выручали)
@TEMA2294
@TEMA2294 2 жыл бұрын
Михаил , ваш канал очень полезен , спасибо за контент
@custercuster4918
@custercuster4918 Жыл бұрын
Это какая-то магия, только я сегодня услышал о MatchMedia, как ваш ролик уже у меня в рекомендациях) Большое спасибо за качественный и полезный контент!
@rasul3d
@rasul3d Жыл бұрын
Спасибо огромное. Хук то что надо. Сразу добавил его в свой проект. Очень удобно. Ваш канал один из лучших!
@user-uf8nw6uc9z
@user-uf8nw6uc9z 2 жыл бұрын
Михаил, очень крутой контент на канале. спасибо за труд
@AndrewFloatrx
@AndrewFloatrx Жыл бұрын
обычно в проде (для большей гибкости) используются breakpoints типа isXs, isXsMin, isSm, isSmMin, isMd, isMdMin, isLg, isLgMin, isXl, isXlMin, isXxl, isXxlMin, isXxxl - где Min покрывает все предыдущие совпадения... также вместо conditional render предпочитаю компоненты "обертки" с заранее прописанной логикой... в целом кое-что новое я таки для себя нашел... не знал за onChange хендлер! 👍 спс
@CJIu3eHb
@CJIu3eHb 2 жыл бұрын
В принципе, можно вынести mediaQueryLists и getValues из тела хука к queries - тогда сам хук почище будет на вид. И забыта зависимость [ ], чтобы не вешать/снимать обработчики на каждый рендер.
@anv7259
@anv7259 2 жыл бұрын
лучший канал
@user-vm2db5cq1g
@user-vm2db5cq1g Жыл бұрын
Михаил, отличный контент на канале. спасибо!
@alexnixx
@alexnixx 2 жыл бұрын
Вау! Спасибо, буду применять)
@akbarkadyrov4619
@akbarkadyrov4619 Жыл бұрын
Миша - лучший
@denispepper2830
@denispepper2830 Жыл бұрын
Спасибо за видео! Очень помогло!
@Dima-wg5kj
@Dima-wg5kj Жыл бұрын
Спасибо! Вы очень помогли!!!
@GagikHarutyunyan_dev
@GagikHarutyunyan_dev Жыл бұрын
Не лучше использовать просто addeventlistener 'resize' и просто брать window.innerHeight < 400, 768 и т.д., вместо создания 'x * breakpoints' обработчиков? Так же выносить в context, чтобы не были в каждом компоненте разные addeventlistener
@MS-wh8ky
@MS-wh8ky 2 жыл бұрын
Спасибо огромное за очень полезный урок! Подскажи, пожалуйста, почему не надо передавать пустой массив зависимостей в хук useLayoutEffect, ведь он же по сути должен только на первый рендер добавить eventListener к matchMediaQuery? Я передал туда пустой массив зависимостей, однако теперь у меня происходит двойной вызов события при переходе на разную ширину экрана. Помоги, пожалуйста, понять, почему это так работает
@EVolkov18
@EVolkov18 Жыл бұрын
Если этот хук использовать в нескольких местах (в разных компонентах), то не приведет ли это к тому что одинаковые обработчики будут объявляться много раз?
@user-fq4pc7fm2z
@user-fq4pc7fm2z 2 жыл бұрын
Спасибо за видео Подскажите, какая UI библиотека использована в этом проекте? Или дизайн с обычным css?
@daniilthegunner843
@daniilthegunner843 2 жыл бұрын
Расскажите пожалуйста, как вы разрабатываете под разные устройства. Через браузерстэк? Что порекомендуете для удобного дебага и правок на различных устройствах. Видел видео на канале у Вадима Макеева, у него на маке эмулятор есть.
@mishanep
@mishanep 2 жыл бұрын
Браузерстеком обычно Q&A специалисты пользуются. Иногда и девы, когда без этого воспроизвести не получается. Для ежедневной разработки, как правило, базового devTools в Хроме или Firefox вполне достаточно.
@daniilthegunner843
@daniilthegunner843 2 жыл бұрын
@@mishanep блин, ну не знаю. Вот на Айфоне например проблемы с высотами 100vh, потому что там то нижняя плашка, то верхняя в браузере меняет размер при скролле. Приходится постоянно с этим бороться.
@igoril7813
@igoril7813 2 жыл бұрын
Вот только один вопрос есть к хуку - а че так можно было? Хук огонь, скокаж мне адаптив крови то попил...
@user-tj8yn5tl2h
@user-tj8yn5tl2h 2 жыл бұрын
Пользовательские хуки всегда интереснее писать. )))
@biLLie_wiLLie
@biLLie_wiLLie 2 жыл бұрын
Спасибо за полезный контент! Почему пишите min-width: 767px? Должно же быть 768px. Я даже на сайте бутстрапа проверил
@mishanep
@mishanep 2 жыл бұрын
Это просто пример и цифры могут быть любыми на ваше усмотрение. Также как и количество брейкпойнтов.
@romanmed9035
@romanmed9035 2 жыл бұрын
можно ли узнать ширину экрана или окна чтобы узнать ширину веб документа без использования document? предположим что это используется для установления ширины каринки вместо медиазапросов.
@mishanep
@mishanep 2 жыл бұрын
Интересная задача - узнать что-то о документе, не обращаясь к самому документу =) Мы можем узнать размер устройства через window.screen, но у пользователя может быть открыт браузер не на весь экран. Саму ширину окна браузера также можно взять из window - window.innerWidth, развно как и для высоты есть аналогичное свойство.
@romanmed9035
@romanmed9035 2 жыл бұрын
@@mishanep согласен что проблема, но при использовании некст, когда виндов нет, а картинку надо создать приходится придумываать как это сделать без виндов и документа. вышестоящие разработчики сказали что надо без использования. хотя у документа все имеется что нужно и сделано уже и работает с этим как должно.
@antonmolotow2414
@antonmolotow2414 2 жыл бұрын
Первый 🤟🏼
@makeouthell1644
@makeouthell1644 2 жыл бұрын
нет ты четвертый
@vovamagic659
@vovamagic659 2 жыл бұрын
React порожняк ганяет туда сюда, пишешь всякое чтобы сделать элементарное действие
@user-tj8yn5tl2h
@user-tj8yn5tl2h 2 жыл бұрын
Пиши в функциональном программирование и порожняка не будет. А если привык мутациям тогда порожняк обеспечен не предсказуемый.
@govorov_top
@govorov_top 2 жыл бұрын
У нас же есть window.outerWidth < 991))
Форматирование чисел в JavaScript
9:53
Михаил Непомнящий
Рет қаралды 8 М.
Принцип подстановки Лисков. SOLID для React
15:26
Михаил Непомнящий
Рет қаралды 12 М.
He bought this so I can drive too🥹😭 #tiktok #elsarca
00:22
Elsa Arca
Рет қаралды 44 МЛН
Angry Sigma Dog 🤣🤣 Aayush #momson #memes #funny #comedy
00:16
ASquare Crew
Рет қаралды 48 МЛН
小丑和白天使的比试。#天使 #小丑 #超人不会飞
00:51
超人不会飞
Рет қаралды 34 МЛН
拉了好大一坨#斗罗大陆#唐三小舞#小丑
00:11
超凡蜘蛛
Рет қаралды 16 МЛН
Автоматизация создания React-компонентов
14:36
Михаил Непомнящий
Рет қаралды 20 М.
Прогрессивные изображения
12:36
Михаил Непомнящий
Рет қаралды 7 М.
GraphQL для фронтенд разработчиков
35:52
Михаил Непомнящий
Рет қаралды 46 М.
Расчет временной дистанции в JavaScript
13:58
Михаил Непомнящий
Рет қаралды 8 М.
Зачем на самом деле нужен хук useCallback
8:33
Михаил Непомнящий
Рет қаралды 42 М.
Глубокое копирование объекта в JavaScript
8:43
Михаил Непомнящий
Рет қаралды 21 М.
Предзагрузка данных через роутинг
24:48
Михаил Непомнящий
Рет қаралды 29 М.
Кастомный скролл для React-компонентов
21:56
Михаил Непомнящий
Рет қаралды 16 М.
Learn JavaScript Touch Events In 17 Minutes
17:45
Web Dev Simplified
Рет қаралды 110 М.
He bought this so I can drive too🥹😭 #tiktok #elsarca
00:22
Elsa Arca
Рет қаралды 44 МЛН