Hola, estoy tratando de guardar mi respuesta. datos en el estado de reacción de mi matriz, pero nunca almacena la matriz correcta, pero cuando hago una matriz temporal, funciona.
¡Cualquier ayuda será apreciada, gracias!
const [allstudentlist, setAllStudentlist] = useState([]); await Axios.post(currentUrl, params).then((res) => { // if res.data[0][] // if res data is there then ; if (res.data["error"]) { alert(res.data["error"]); } else { // alert("Register Successful"); // console.log(res.data[0]); console.log(res.data); // works let temp = res.data; setAllStudentlist(...temp); // works console.log(temp); // returns an empty array console.log(allstudentlist); } });
Datos de respuesta
Traté de probar también con una API falsa, pero parece que hay un problema con la configuración de matrices en reacción
Traté de probar con codeSandbox también con una API falsa y no funciona
import "./styles.css"; import React, { Component, useState, useEffect } from "react"; import Axios from "axios"; export default function App() { const [array2, setArray] = useState([]); function handleClick() { Axios.get("https://finalspaceapi.com/api/v0/character/?limit=2").then( function (response) { console.log(response.data); setArray(response.data); console.log(array2); } ); } return ( <div className="App"> <h1>Hello CodeSandbox</h1> <h2>Start editing to see some magic happen!</h2> <button onClick={handleClick}></button> </div> ); }
No puede ver los valores actualizados justo después del estado establecido, ya que es una función asíncrona. La forma en que estableces los valores está bien. Mueva el registro de la consola;
Fuera de handleClick
function handleClick() { Axios.get("https://finalspaceapi.com/api/v0/character/?limit=2").then( function (response) { console.log(response.data); setArray(response.data); } ); } console.log(array2);
O
Guárdelo dentro de un useEffect
con una dependencia
useEffect(() => { console.log(array2); }, [array2]);