Suponiendo que la API de ProfileService devuelve un objeto apropiado, ¿por qué la variable de estado de datos no está definida cuando intento registrarla?
NOTA: solo tengo este problema en componentes funcionales; el mismo código funciona en un componente de clase.
export default function Id() { const [data, setData] = useState({}); useEffect(() => { console.log("Mounted."); fetchProfile("123"); }, []); const fetchProfile = (id) => { ProfileService.getProfile(id).then((response) => { if (response.status === 200) { setData(response.data); console.log("200 OK", data); // returns "200 OK undefined" } console.log("Called ", data); // returns "Called undefined" }); }; return null; }El establecedor que se devuelve desde useState es asíncrono. No verá el cambio hasta la próxima vez que se invoque la función de su componente (el cambio de estado hará que eso suceda casi de inmediato)
Por supuesto, ya sabes cuál es el valor que acabas de establecer...
Cuando intentó obtener un nuevo valor de estado inmediatamente después de establecer un estado, siempre tendrá un valor anterior.