Как менять меню в зависимости от ширины экрана?

Прошу прощения за мой английский с помощью переводчика. Я использую React.js. У меня есть компонент «заголовок», который принимает два других компонента — и .

import React, { Component } from 'react';
import styles from './Header.module.css';
import MainLogo from '../MainLogo/MainLogo';
import NavMenu from '../NavMenu/NavMenu';
import BurgerButton from '../BurgerMenu/BurgerButton';
import BurgerMenu from '../BurgerMenu/BurgerMenu';class Header extends Component {

  render() {

    return (
      <header className = {styles.header}>
        <nav className = {styles.navBar}>
          <MainLogo />
          <NavMenu />
        </nav>
      </header>
    );
  }
}
export default Header;

Я также создал отдельный компонент. Я хочу получить такой вариант разметки: если размер экрана <= 420px, компонент должен отображаться в шапке. При ширине экрана >420px компонент должен отображаться. Понимаю, что вопрос очень банальный, но элегантного решения пока не нашел.

Заранее спасибо!

P.S. использование внешней библиотеки не подходит.

"при размере экрана <= 420px компонент должен отображаться в шапке. При ширине экрана >420px компонент должен отображаться" что это значит для вас?

Emanuele Scarabattoli 28.07.2019 09:29

Мне нужен такой результат - ширина экрана меньше 420px в шапке отрисовывается Component 1 (BurgerButton), когда ширина экрана больше 420px в шапке отрисовывается Component 2 (NavMenu).

Igor Nerovnyi 29.07.2019 10:02
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
2
1 025
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать react-media для условной визуализации компонентов в зависимости от размера экрана.

В вашем случае это будет выглядеть примерно так (адаптируйте под свою разметку)

      <header className = {styles.header}>
        <nav className = {styles.navBar}>
          <MainLogo />
          <NavMenu />
          <Media query = {{ maxWidth: 420 }}>
            {matches => <MyComponent /> // Component is in the header}
          </Media>
        </nav>
      </header>

      <Media query = {{ minWidth: 421 }}>
        {matches => <MyComponent /> // Component is outside of the header}
      </Media>

Отлично! это то, что мне было нужно! Большое спасибо!

Igor Nerovnyi 29.07.2019 09:54

Другие вопросы по теме