Oi, Lorema. Bom dia
Infelizmente o efeito foi o mesmo, ou seja, ainda preciso dar F5 na pagina para carregar as informações da sessionStorage.
Pelo que li na documentação, talvez a solução mais correta seria usar o UserContext, porem tenho pouco experiência para afirmar. Caso há uma solução desta maneira gostaria de saber afim de experiência. Vou deixar meu código abaixo para sua analise, pois pode ser que eu esteja fazendo algo errado.
1° Componente Busca dados
import { Container, Image } from "react-bootstrap";
import "./styles.css";
import { useEffect, useState } from "react";
const UsuarioLogado = () => {
const [nome, setNome] = useState("");
const [foto, setFoto] = useState("");
useEffect(()=>{
const nomeUsuario = sessionStorage.getItem("Nome");
const base64Imgem = sessionStorage.getItem("Foto");
const fotoUsuario = "data:image/png;base64," + base64Imgem;
setNome(nomeUsuario);
setFoto(fotoUsuario);
},[]);
return (
{nome && (
<>
{foto && (
{nome}
)}
</>
)}
);
};
export default UsuarioLogado;
2° Login
import React, { useState, useContext } from "react";
import { useNavigate } from "react-router-dom";
import { Container, Row, Col, Form, Button, Alert } from "react-bootstrap";
import LogoLogin from "../../imgs/Login.webp";
import Config from "../../api/Config";
import "./style.css";
const Login = () => {
const navigate = useNavigate();
const [mensagem, setMensagem] = useState(null);
const [dados, setDados] = useState({
UserName: "",
password: "",
});
const handleChange = (event) => {
const { name, value } = event.target;
setDados({
...dados,
[name]: value,
});
};
const handleSubmit = async (event) => {
event.preventDefault();
try {
await Config.post("Auth/Login", dados).then((response) => {
sessionStorage.setItem("token", response.data.token);
sessionStorage.setItem("Nome", response.data.nome);
sessionStorage.setItem("Foto", response.data.foto);
sessionStorage.setItem("CodSistema", response.data.codSistemas);
switch (response.data.codSistemas) {
case 1:
navigate("/Academia");
break;
case 2:
navigate("/Barbearia");
break;
case 3:
navigate("/Medicina");
break;
default:
navigate("/Login");
}
});
} catch (error) {
setMensagem({
tipo: "danger",
texto: JSON.stringify(error.response.data),
});
}
};
return (
<>
Login
3: °
import "./App.css";
import "bootstrap/dist/css/bootstrap.min.css";
import Routers from "./routers/Routers";
import NavigatorTop from "./components/Navegations/NavigatorTop";
import UsuarioLogado from "./components/UsurioLogado/UsuarioLogado";
function App() {
return (
</div>
);
}
export default App;