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

#javascript #reactjs #navbar

Вопрос:

Я сделал навигацию, которая работает в html и css, но когда я добавил в нее react, она не работала, а также я не могу добавить скрипт в файл, но он не работал. Я использовал шлем react, но и он мне не помог. На самом деле, когда я добавил навигационную панель начальной загрузки, это также не помогло мне. Поскольку я сталкиваюсь с проблемой, когда я добираюсь до px ниже 800, он показывает опцию меню гамбургеров, но когда я нажимаю на нее, меню не отображается . Еще одна вещь, когда он всегда показывает главное меню при низком px

это мой код JSX

  import React from 'react'
import './Heading.css'
import MenuIcon from '@material-ui/icons/Menu';
import Nav_items from './Nav_items'
import Nav_icons from './Nav_icons'
import useDocumentTitle from '../Document'
const Heading = () => {
    useDocumentTitle('Home')
    return (
       
        <div>
           <nav class="nav">
        <div class="nav-menu flex-row">
            <div class="nav-brand">
                <a href="/" class="text-gray" >NOOB-GEEKS</a>
            </div>
            <div class="toggle-collapse">
                <div class="toggle-icon"> 
                    <MenuIcon/>
                </div>
            </div>
            <div>
              <Nav_items/>
            
            </div>
           <Nav_icons/>
        </div>
    </nav>
   
        </div>
    )
   
    
}

export default Heading
 

это мои компоненты nav_items и nav_icons

 import React from 'react'
import { NavLink } from 'react-router-dom';

const Nav_items = () => {
    return (
        <div className="nav-items">
                    
                <NavLink activeClassName='nav-link' to="/">Home</NavLink>
                <NavLink className='nav-link' to="/category">Category</NavLink>
                <NavLink className='nav-link' to="/pages">Pages</NavLink>
                <NavLink className='nav-link' to="/archives">Archives</NavLink>
                <NavLink className='nav-link' to="/contact-us">Contact us</NavLink>
                <NavLink className='nav-link' to="/log-in">Log-in/Sign-up</NavLink>
               
                </div>
    )
}

export default Nav_items

 
 import React from 'react'
import FacebookIcon from '@material-ui/icons/Facebook';
import InstagramIcon from '@material-ui/icons/Instagram';
import LinkedInIcon from '@material-ui/icons/LinkedIn';
import TwitterIcon from '@material-ui/icons/Twitter';
import YouTubeIcon from '@material-ui/icons/YouTube';
const Nav_icons = () => {
    return (
        <div class="nav-social text-gray">
                <a href="" target='_blank' ><FacebookIcon/></a>
                <a href="" target='_blank'><InstagramIcon/></a>
                <a href="" target='_blank'><TwitterIcon/></a>
                <a href="" target='_blank'><LinkedInIcon/></a>
                <a href="" target='_blank'><YouTubeIcon/></a>
            </div>
    )
}

export default Nav_icons

 

this is my css code

 
.nav{
    background: white;
    padding: 0 2rem;
    height:0rem;
    min-height: 10vh;
    overflow:hidden;
    transition:height 1s ease-in-out ;
    border-bottom: 1px solid #d3d3d3;
}
.nav .nav-menu{

   justify-content: space-between;
}
.nav .toggle-collapse{
    position: absolute;
    top: 0%;
    width: 90%;
    cursor: pointer;
    display: none;
}
.nav .toggle-collapse .toggle-icon{
    display: flex;
    justify-content: flex-end;
    padding: 1.7rem 0;
}

nav.toggle-collapse .toggle-icon div{
font-size: 1.4rem;
color: var(--text-gray);
}
.collapse{
    height: 30rem;
}
.nav .nav-items{
   
    display: flex;
    margin: 0;
}
.nav .nav-items .nav-link{
    padding: 1.6rem 1rem;
    font-size: 1.1rem;
    position: relative;
    font-family: var(--Livvic);
    font-size: 1.1rem;
}
.nav .nav-items .nav-link:hover{
    background-color: var(--midnight);
}
.nav .nav-items  .nav-link:hover{
  color:var(--white);
}

.nav .nav-brand {
    font-size: 1.6rem;
    padding: 1rem 0;
    display: block;
    font-family: var(--Lexend);
    font-size: 1.6rem;
 }
.nav-social{
    padding: 1.4rem 0;
}
.nav-social a{
    padding: 0 .2rem;
}
.nav-social a:hover{
    color: #a1c4cf;
}
@media only screen and (max-width:800px) {
    .nav .nav-menu, .nav .nav-items{
        flex-direction: column;

    }
    .nav .toggle-collapse{
        display: initial;
    }
}
 

это мой сценарий, который я могу добавить

 $(document).ready(function() {`
    $nav = $('.nav');
    $toggleCollapse = $('.toggle-collapse');

    $toggleCollapse.click(function () {
        $nav.toggleClass('collapse');
        
    })
    //owl caraousel
    $('.owl-carousel').owlCarousel({
        loop: true,
        autoplay:true,
        autoplayTimeout:3000 ,
        dots:false,
        nav:true,
        navText:[$('.owl-navigation .owl-nav-prev'),$('.owl-navigation  .owl-nav-next')]
    });
`});
 

Пожалуйста, помогите…Как я снова говорю, моя проблема в том, что мое меню не открывается, когда я нажимаю на него

Комментарии:

1. Вам нужно сначала, прежде чем работать над своим меню, решить, с каким стеком вы хотите работать. Вы хотите использовать React или jQuery? Вы хотите использовать материал-пользовательский интерфейс или загрузочный?

Ответ №1:

Чтобы переключиться в React, вам не нужен jQuery. Чтобы добавить или удалить класс в React, вы можете использовать следующий пример.

 const Heading = () => {
    useDocumentTitle('Home')
    //create a open state (true / false)
    const [ open, setOpen ] = useState(false);

    //a simple toggle function that switches between true/false
    const toggle = () => setOpen(!open)
    return (
       
        <div>
           // here we add the 'collapse' class when it's false
           <nav class={`nav ${ open ? '' : 'collapse' }`}>
        <div class="nav-menu flex-row">
            <div class="nav-brand">
                <a href="/" class="text-gray" >NOOB-GEEKS</a>
            </div>
            <div class="toggle-collapse">
                //here u can use a onClick event to toggle true/false
                <div class="toggle-icon" onClick={toggle} > 
                    <MenuIcon/>
                </div>
            </div>
            <div>
              <Nav_items/>
            
            </div>
           <Nav_icons/>
        </div>
    </nav>
   
        </div>
    )
   
    
}

export default Heading
 

Я не использую bootstrap, поэтому я не знаю, куда добавлять конкретные классы, вы должны разработать эту часть самостоятельно.

Комментарии:

1. Спасибо, братан…все работает, но есть одна проблема, когда я восстанавливаю экран, всегда отображается домашняя навигация

2. может быть, вы хотите поиграть с состоянием open . У меня нет вашего полного исходного кода для отладки этих проблем.