Вы на правильном пути. Когда страница загружена, запускается функция NavBar
, читается сессия, а значение чтения копируется в переменную logged
. NavBar
не может знать, когда изменилось хранилище сеанса, без повторного опроса.
Чтобы больше соответствовать типичным шаблонам React, я бы предложил передать состояние входа в систему как опору из NavBar
' s Родитель или откуда бы логин государства входа c не был.
function NavBar(props) {
let logged = props.logged;
...
}
function Parent() {
const [logged, setLogged] = useState(false);
function logIn() {
// Some logic to determine log-in
// Note that you shouldn't depend on front-end code for strong authentication
setLogged(true);
}
return (
<div>
<NavBar logged={logged} />
<button onClick={logIn} />
</div>
);
}
Мы используем хук useState
для создания переменной состояния. Используя функцию set, которую возвратил хук, мы сообщаем React, что что-то, от чего зависит представление, изменилось и что ему нужно снова выполнить рендеринг.
Если вы не знакомы с хуками, посмотрите Реагировать на документацию .