如何在 React 中使用媒体查询?

How to use Media Queries in React?

我有这个问题:我正在制作 header 具有响应大小,因此当宽度小于 1199px 时,用户可以看到汉堡菜单。对于 open/close 菜单,我正在使用 React Hooks,它会更改显示:block / none。但只有当屏幕小于 1199px 时它才能工作,但在我的情况下它每次都工作,显然我的 header 显示:none 并且页面上没有任何内容(只有我的徽标)

组件代码:

const Header = () => {
    const [navBar, showNavBar] = useState(false)

    const useNavBar = () => {
        showNavBar(!navBar)
    }

    return (
        <header class="header-area main-header">
            <div class="container">
                <div class="row">
                    <div class="col-lg-2">
                        <div class="logo-area">
                            <a href='#'><img src={logo} alt="logo"/></a>
                        </div>
                    </div>
                    <div class="col-lg-10">
                        <div onClick={useNavBar} class="custom-navbar">
                            <span></span>
                            <span></span>
                            <span></span>
                        </div>  
                        <div class="main-menu">
                            <ul style={navBar === true ? {display: 'block'} : {display: 'none'}}> // problem is here
                                <li class="active"><a href="index.html">home</a></li>
                                <li><a href="#">about us</a></li>
                                <li><a href="#">schedule</a></li>
                                <li><a href="#">trainers</a></li>
                                <li><a href="#">blog</a>
                                    <ul class="sub-menu">
                                        <li><a href="#">Blog Home</a></li>
                                        <li><a href="#">Blog Details</a></li>
                                    </ul>
                                </li>
                                <li><a href="#">contact</a></li>
                                <li><a href="#">pages</a>
                                    <ul class="sub-menu">
                                        <li><a href="s#">Service</a></li>
                                        <li><a href="#">Elements</a></li>
                                    </ul>
                                </li>
                                <li class="menu-btn">
                                    <a href="#" class="template-btn">book now</a>
                                </li>
                            </ul>
                        </div>
                    </div>
                </div>
            </div>
        </header>
     );
}

SASS代码:

.main-menu 
    ul 
        float: right
        @include desktop() 
            display: none
            float: left
            position: absolute
            top: 60px
            right: 0
            z-index: 4
            background: $dark
            width: 40%
            padding: 20px 20px 30px

PS:我不想添加我所有的 CSS 代码,因为它超过 200 个字符串,请解释一下如何在我的案例中使用媒体查询更改显示

不要使用内联样式。将 class 名称 更改为 JavaScript.

根据 class 名称和媒体查询在您的样式表中设置 display

<ul className={navBar === true ? "foo" : "bar"}>