• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

144
Vistas
Obtenga datos usando useeffect hook en react js

Tengo un editor de página simple. Cuando un usuario hace clic en editar página, abre un editor. Estoy pasando la ID de la página usando redux que se usará para obtener datos de la API.

Aquí está mi Redactor.

 const [pageData, setPageData] = useState(""); const getPage = async (id) => { try { const response = await api.get(`/landing_pages/${id}`); console.log("page", response.data); // displays data at the end setPageData(response.data); } catch (error) { console.log(error); } }; useEffect(() => { getPage(pageID); console.log('Page Data', pageData) // displays nothing let LandingPage = pageData; const editor = grapesjs.init({ container: "#editor", components: LandingPage.components || LandingPage.html, }) }, [pageID, getPage])

¿Por qué los datos de la página no muestran nada a pesar de que los datos de la API se devuelven y se muestran en la consola al final? ¿Qué estoy haciendo mal aquí?

about 3 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Incluso si await su llamada getPage , los pageData de página actualizados no estarán disponibles hasta el siguiente ciclo de procesamiento, por lo que su asignación a LandingPage estará un ciclo atrás.

En su lugar, debe actualizar en un useEffect y observar los cambios en pageData en otro.

 const [pageData, setPageData] = useState(""); useEffect(() => { const getPage = async (id) => { try { const response = await api.get(`/landing_pages/${id}`); console.log("page", response.data); // displays data at the end setPageData(response.data); } catch (error) { console.log(error); } }; getPage(pageID); }, [pageID]); useEffect(() => { console.log('Page Data', pageData); // displays updated pageData let LandingPage = pageData; const editor = grapesjs.init({ container: "#editor", components: LandingPage.components || LandingPage.html, }); }, [pageData]);
about 3 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda