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

แชร์
ฝัง
  • เผยแพร่เมื่อ 17 พ.ค. 2022
  • Определяем размер экрана через кастомный хук и показываем контент по условию в React-приложении.
    Ссылки из видео:
    - matchMedia на MDN developer.mozilla.org/ru/docs...
    - npm пакет use-match-media github.com/jepser/use-match-m...
    - код кастомного хука codesandbox.io/s/use-match-me...
    #js
    Мои курсы по вебу с купонами:
    ✅ mishanep.com/
    📢 Поддержка канала:
    / mishanep
    www.tinkoff.ru/rm/nepomnyasch...
    paypal.me/mishanep

ความคิดเห็น • 36

  • @mishanep
    @mishanep  2 ปีที่แล้ว +15

    Если вы пишите тесты в своих приложения, то, во-первых, это очень хорошо =) А во-вторых, чтобы тестировать метод matchMedia и корректность его работы рекомендую поставить библиотеку *mock-match-media* .

    • @sadmoment6716
      @sadmoment6716 2 ปีที่แล้ว

      БЛ, Сейчас искал свой старинный детский канал(я когда малой был пробовал снимать видео) нашел своего однофамильца с таким же именем как и у меня)
      Хоть даже название канала не совпадало с названием твоего

    • @ri4an598
      @ri4an598 2 ปีที่แล้ว

      @@sadmoment6716 еще есть шахматист - Ян Непомнящий)

  • @boycovclub
    @boycovclub ปีที่แล้ว +1

    Кто-то получает кайф от сериалов, кто-то от порнухи )) а я получаю кайф, когда вижу как пишут красиво код и объясняют. Я уже 2 года работаю, но до сих пор голоден ))

  • @TEMA2294
    @TEMA2294 2 ปีที่แล้ว +4

    Михаил , ваш канал очень полезен , спасибо за контент

  • @user-fs1pm5oe5s
    @user-fs1pm5oe5s 2 ปีที่แล้ว +5

    Супер, Михаил, спасибо за то что Вы делаете! Максимально качественно и максимально полезно! Не раз выручали)

  • @user-uf8nw6uc9z
    @user-uf8nw6uc9z 2 ปีที่แล้ว +4

    Михаил, очень крутой контент на канале. спасибо за труд

  • @denispepper2830
    @denispepper2830 ปีที่แล้ว

    Спасибо за видео! Очень помогло!

  • @user-vm2db5cq1g
    @user-vm2db5cq1g ปีที่แล้ว

    Михаил, отличный контент на канале. спасибо!

  • @Dima-wg5kj
    @Dima-wg5kj ปีที่แล้ว

    Спасибо! Вы очень помогли!!!

  • @custercuster4918
    @custercuster4918 ปีที่แล้ว

    Это какая-то магия, только я сегодня услышал о MatchMedia, как ваш ролик уже у меня в рекомендациях) Большое спасибо за качественный и полезный контент!

  • @rasul3d
    @rasul3d ปีที่แล้ว

    Спасибо огромное. Хук то что надо. Сразу добавил его в свой проект. Очень удобно. Ваш канал один из лучших!

  • @alexnixx
    @alexnixx 2 ปีที่แล้ว +1

    Вау! Спасибо, буду применять)

  • @anv7259
    @anv7259 2 ปีที่แล้ว +4

    лучший канал

  • @AndrewFloatrx
    @AndrewFloatrx ปีที่แล้ว +2

    обычно в проде (для большей гибкости) используются breakpoints типа isXs, isXsMin, isSm, isSmMin, isMd, isMdMin, isLg, isLgMin, isXl, isXlMin, isXxl, isXxlMin, isXxxl - где Min покрывает все предыдущие совпадения... также вместо conditional render предпочитаю компоненты "обертки" с заранее прописанной логикой... в целом кое-что новое я таки для себя нашел... не знал за onChange хендлер! 👍 спс

  • @akbarkadyrov4619
    @akbarkadyrov4619 ปีที่แล้ว +1

    Миша - лучший

  • @CJIu3eHb
    @CJIu3eHb 2 ปีที่แล้ว +3

    В принципе, можно вынести mediaQueryLists и getValues из тела хука к queries - тогда сам хук почище будет на вид. И забыта зависимость [ ], чтобы не вешать/снимать обработчики на каждый рендер.

  • @antonmolotow2414
    @antonmolotow2414 2 ปีที่แล้ว

    Первый 🤟🏼

  • @user-fq4pc7fm2z
    @user-fq4pc7fm2z ปีที่แล้ว

    Спасибо за видео Подскажите, какая UI библиотека использована в этом проекте? Или дизайн с обычным css?

  • @MS-wh8ky
    @MS-wh8ky 2 ปีที่แล้ว +1

    Спасибо огромное за очень полезный урок! Подскажи, пожалуйста, почему не надо передавать пустой массив зависимостей в хук useLayoutEffect, ведь он же по сути должен только на первый рендер добавить eventListener к matchMediaQuery? Я передал туда пустой массив зависимостей, однако теперь у меня происходит двойной вызов события при переходе на разную ширину экрана. Помоги, пожалуйста, понять, почему это так работает

  • @GagikHarutyunyan_dev
    @GagikHarutyunyan_dev ปีที่แล้ว

    Не лучше использовать просто addeventlistener 'resize' и просто брать window.innerHeight < 400, 768 и т.д., вместо создания 'x * breakpoints' обработчиков? Так же выносить в context, чтобы не были в каждом компоненте разные addeventlistener

  • @EVolkov18
    @EVolkov18 ปีที่แล้ว +1

    Если этот хук использовать в нескольких местах (в разных компонентах), то не приведет ли это к тому что одинаковые обработчики будут объявляться много раз?

  • @daniilthegunner843
    @daniilthegunner843 2 ปีที่แล้ว

    Расскажите пожалуйста, как вы разрабатываете под разные устройства. Через браузерстэк? Что порекомендуете для удобного дебага и правок на различных устройствах. Видел видео на канале у Вадима Макеева, у него на маке эмулятор есть.

    • @mishanep
      @mishanep  2 ปีที่แล้ว

      Браузерстеком обычно Q&A специалисты пользуются. Иногда и девы, когда без этого воспроизвести не получается. Для ежедневной разработки, как правило, базового devTools в Хроме или Firefox вполне достаточно.

    • @daniilthegunner843
      @daniilthegunner843 2 ปีที่แล้ว

      @@mishanep блин, ну не знаю. Вот на Айфоне например проблемы с высотами 100vh, потому что там то нижняя плашка, то верхняя в браузере меняет размер при скролле. Приходится постоянно с этим бороться.

  • @romanmed9035
    @romanmed9035 ปีที่แล้ว

    можно ли узнать ширину экрана или окна чтобы узнать ширину веб документа без использования document? предположим что это используется для установления ширины каринки вместо медиазапросов.

    • @mishanep
      @mishanep  ปีที่แล้ว

      Интересная задача - узнать что-то о документе, не обращаясь к самому документу =) Мы можем узнать размер устройства через window.screen, но у пользователя может быть открыт браузер не на весь экран. Саму ширину окна браузера также можно взять из window - window.innerWidth, развно как и для высоты есть аналогичное свойство.

    • @romanmed9035
      @romanmed9035 ปีที่แล้ว

      @@mishanep согласен что проблема, но при использовании некст, когда виндов нет, а картинку надо создать приходится придумываать как это сделать без виндов и документа. вышестоящие разработчики сказали что надо без использования. хотя у документа все имеется что нужно и сделано уже и работает с этим как должно.

  • @igoril7813
    @igoril7813 2 ปีที่แล้ว +1

    Вот только один вопрос есть к хуку - а че так можно было? Хук огонь, скокаж мне адаптив крови то попил...

    • @user-tj8yn5tl2h
      @user-tj8yn5tl2h 2 ปีที่แล้ว

      Пользовательские хуки всегда интереснее писать. )))

  • @biLLie_wiLLie
    @biLLie_wiLLie 2 ปีที่แล้ว

    Спасибо за полезный контент! Почему пишите min-width: 767px? Должно же быть 768px. Я даже на сайте бутстрапа проверил

    • @mishanep
      @mishanep  2 ปีที่แล้ว +2

      Это просто пример и цифры могут быть любыми на ваше усмотрение. Также как и количество брейкпойнтов.

  • @vovamagic659
    @vovamagic659 2 ปีที่แล้ว

    React порожняк ганяет туда сюда, пишешь всякое чтобы сделать элементарное действие

    • @user-tj8yn5tl2h
      @user-tj8yn5tl2h 2 ปีที่แล้ว

      Пиши в функциональном программирование и порожняка не будет. А если привык мутациям тогда порожняк обеспечен не предсказуемый.

  • @govorov_top
    @govorov_top 2 ปีที่แล้ว

    У нас же есть window.outerWidth < 991))