Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

167
Vistas
¿Cómo recuperar condicionalmente los datos del usuario según el estado de inicio de sesión con SWR?

Estoy tratando de establecer un estado de IU que depende de si un usuario ha iniciado sesión. Si un usuario ha iniciado sesión, algún estado en la IU debería reflejar esto.

Estoy usando SSG para generar páginas estáticamente y SWR para obtener los datos del usuario. Cuando llamo a mi función de búsqueda y trato de llamar a mi enlace personalizado para verificar si el usuario está conectado, en la solicitud inicial, el usuario no está definido, pero cuando recargo, el usuario está presente.

¿Por qué es este el caso? ¿Se llama a la función de búsqueda antes que nada y cómo puedo solucionarlo?

Básicamente, todo lo que quiero es SSG las [parkCode].js y obtener algunos datos de usuario para mostrar el estado específico del usuario.

Aquí está mi código:

 // [parkCode].js import checkUser from '../../hooks/checkUser' import useSWR from 'swr' export default function Park({parkCode}) const user = checkUser() const fetcher = async () => { const username = await user?.username console.log(username) try { const {data} = await API.graphql({ query: listSites, variables: { filter: { code: {eq: parkCode}, owner: {eq: username}, }, }, }) return data?.listSites?.items[0] || null } catch (err) { console.error('Site not added by user', err) } } const {data, error} = useSWR('park', fetcher) console.log(data) // logs an error (says }

Mi gancho para ver si un usuario ha iniciado sesión

 //checkUser.js import {useState, useEffect} from 'react' import {Auth, Hub} from 'aws-amplify' export default function checkUser() { const [user, setUser] = useState(null) useEffect(() => { checkUserAuth() const unsubscribe = Hub.listen('auth', () => checkUserAuth()) return () => unsubscribe() }, []) async function checkUserAuth() { try { const signedInUser = await Auth.currentAuthenticatedUser() setUser(signedInUser) } catch (err) { setUser(null) } } return user }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Cuando la página se representa por primera vez, la variable de user aún tiene su estado inicial ( null ), ya que el gancho checkUser useEffect aún no se ha ejecutado. Esto significa que cuando se useSWR('park', fetcher) , el user dentro del método de búsqueda también será null . Para evitar este comportamiento, puede recuperar condicionalmente los datos en la llamada useSWR solo cuando el user está configurado.

 export default function Park({ parkCode }) const user = checkUser() const fetcher = async () => { // No need to call `await` to get `username` here const username = user?.username try { const { data } = await API.graphql({ query: listSites, variables: { filter: { code: { eq: parkCode }, owner: { eq: username }, } } }) return data?.listSites?.items[0] || null } catch (err) { console.error('Site not added by user', err) } } // Only call the fetcher method if `user` exists const { data, error } = useSWR(user ? ['park', user?.username] : null, fetcher) if (data) { // Handle `data` when it's set } // Rest of your component }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda