Estoy tratando de almacenar datos con mi método setState dentro de mi función pero nunca lo actualiza, sin embargo, si los configuro en una variable (lo llamo "x"), funciona.
Tengo mi función que devuelve una Promesa
Espero poder obtener ayuda para averiguar dónde me equivoqué o entender si no se puede hacer o no.
import { NextPage } from "next"; import { useState } from "react"; import { useAirtable } from "../functions/useAirtable"; import { MyType } from "../model/MyType"; const Foo: NextPage = () => { const [barbaz, setBarbaz] = useState<any>([]); let x: any = []; try { useAirtable("My_Table").then((data: MyType) => { setBarbaz(data); x = data; console.log("print1: ", data); //It PRINTS data console.log("print2: ", barbaz); //It PRINTS empty array console.log("print3: ", x); //It PRINTS data } ); } catch (error) {} console.log("print4: ", barbaz); //It PRINTS empty array console.log("print5: ", x); //It PRINTS empty array return <div> where is waldo </div>; }; export default Foo;Envuelva su llamada asíncrona en un gancho useEffect .
import { NextPage } from "next"; import { useState, useEffect } from "react"; import { useAirtable } from "../functions/useAirtable"; import { MyType } from "../model/MyType"; const Foo: NextPage = () => { const [barbaz, setBarbaz] = useState<any>([]); useEffect(() => { useAirtable("My_Table").then((data: MyType) => { setBarbaz(data); } }, []) return <div> where is waldo </div>; }; export default Foo;