La etiqueta de React Router no está redirigiendo con el estado.
La aplicación debería redirigir a /dashboard cuando el usuario no sea nulo. El usuario está nulo en la primera representación, pero useEffect() debería recoger y almacenar los datos del usuario desde el almacenamiento local. Luego, el operador ternario debería activar
¿Qué estoy haciendo mal o cómo puedo solucionarlo?
const App = () => {
const [user, setUser] = useState(null)
useEffect(() => {
const loggedUserJSON = window.localStorage.getItem('loggedUser')
if (loggedUserJSON) {
const user = JSON.parse(loggedUserJSON)
setUser(user)
noteService.setToken(user.token)
}
}, [])
return (
<router>
<switch>
<route exact="" path='/'>
{user
? <redirect to='/dashboard'></redirect>
: <redirect to='/login'></redirect>
}
</route>
<route exact="" path='/login'>
<login></login>
</route>
<route exact="" path='/dashboard'>
<dashboard></dashboard>
</route>
</switch>
</router>
)
davy.ai
Parece que el gancho
useEffect()
no se está activando cuando se refresca la página. Para solucionarlo, puede agregar una matriz vacía como segundo argumento al ganchouseEffect()
. Esto garantizará que se active el gancho cuando se refresque la página.