Не удается закрыть меню гамбургера в ReactJS

#reactjs

Вопрос:

Я пытаюсь закрыть меню гамбургера, но оно не закрылось, сначала я инициализирую и устанавливаю значение useState равным false,

 const [burgerStatus,setBurgerStatus] = useState(false);
 

А затем я создал стилизованный компонент {BurgerNav}, а затем передал ему параметр show и присвоил {burgerStatus}.

 <BurgerNav show={burgerStatus}>
 

Затем в CSS я использовал преобразование

 transform: ${props => props.show ? 'translateX(0)': 'translateX(100%)'};
 

Затем в меню гамбургера я сначала создаю обработчик onClick и устанавливаю значение burgerstatus равным true, а затем пытаюсь щелкнуть по меню, и оно успешно открывается.

 <CustomMenu onClick={() => setBurgerStatus(true)}></CustomMenu>
 

Но затем я создаю другой обработчик onClick, чтобы закрыть меню, но он не может работать

 <CloseWrapper> 
     <CustomClose onclick={() => setBurgerStatus(false)}>
     </CustomClose>
</CloseWrapper>
 

ПОЛНЫЙ КОД

     const [burgerStatus,setBurgerStatus] = useState(false);
    return (
        <Container>
            <a>
                <img src="/images/logo.svg" alt=""/> 
            </a>
             <Menu>
                <a href="#"> Model S</a> 
                <a href="#"> Model 3</a>
                <a href="#"> Model X</a>
                <a href="#"> Model Y</a> 
             </Menu>
             <RightMenu>
                <a href="#"> Shop</a> 
                <a href="#"> Tesla Account</a> 
                <CustomMenu onClick={() => setBurgerStatus(true)}>
                </CustomMenu>
             </RightMenu>
             <BurgerNav show={burgerStatus}>
                 <CloseWrapper> 
                    <CustomClose onclick={() => setBurgerStatus(false)}>
                    </CustomClose>
                 </CloseWrapper>
                 <li><a href="#">Existing Inventory</a></li>
                 <li><a href="#">Used Inventory</a></li>
                 <li><a href="#">Trade-in</a></li>
                 <li><a href="#">Cyber truck</a></li>
                 <li><a href="#">Roadster</a></li>
             </BurgerNav>
        </Container>
 

Ответ №1:

я вижу, что в вашем коде есть синтаксическая ошибка

 <CloseWrapper> 
     <CustomClose onclick={() => setBurgerStatus(false)}>
     </CustomClose>
</CloseWrapper>
 

Перемены здесь onclick to onClick

 <CloseWrapper> 
     <CustomClose onClick={() => setBurgerStatus(false)}>
     </CustomClose>
</CloseWrapper>
 

Тогда это должно сработать, пожалуйста, окажите некоторую поддержку, если мой ответ поможет, и примите его как ответ.

Ответ №2:

Я предлагаю также отредактировать ваш settings.json код в вашем редакторе кода.

Путем добавления —

 "emmet.includeLanguages": {
    "javascriptreact"
  }
 

Это поможет вам с автозаполнением вашего JSX и, надеюсь, поможет с этими небольшими ошибками в будущем. Или также добавление расширения, которое добавляет подсветку синтаксиса, действительно помогает видеть все немного проще.