Я пришел из Vue фона и мне очень трудно понять, как показать что-то условно, когда HTML разбит на несколько частей.
Предположим, я получил следующее структура:
import React, { useState } from "react";
const [mobileNavOpen, setMobileNavOpen] = useState(false);
function Home() {
return (
<div>
<button
onClick={(): void => setMobileNavOpen(true)}
type="button"
className="btn"
>
X
</button>
{mobileNavOpen && <MobileNav />}
</div>
);
}
function MobileNav() {
return (
<div>
<button
onClick={(): void => setMobileNavOpen(false)}
type="button"
className="btn"
>
X
</button>
</div>
);
}
export default Home;
Как бы я мог получить доступ к [mobileNavOpen, setMobileNavOpen] в Home () и MobileNav (). По сути, я хочу достичь домашнего компонента, где пользователи могут нажать кнопку, после чего открывается компонент MobileMenu, и еще одна кнопка, которую они могут использовать, чтобы снова закрыть меню.
Прямо сейчас, вторая строка сверху const [mobileNavOpen, setMobileNavOpen] = useState(false);
приводит к Error: Invalid hook call. Hooks can only be called inside of the body of a function component.
, но куда бы я ее поместил?
Должна ли эта строка находиться в компоненте Home (), и все дочерние компоненты генерируют событие, чтобы показать или закрыть меню? Или мне нужна библиотека управления состоянием для чего-то такого простого? Что такое «Реагировать» способ сделать это?