嗨,我正在嘗試將我的 response.data 保存到我的 react 陣列狀態,但它從不存盤正確的陣列,但是當我做一個臨時陣列時它可以作業。
任何幫助將不勝感激,謝謝!
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);
}
});
回應資料
回應資料
我也嘗試使用假 api 進行測驗,但看起來在 react 中設定 Arrays 存在問題
我嘗試使用 codeSandbox 以及假 API 進行測驗,但它不起作用
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>
);
}
uj5u.com熱心網友回復:
您無法在設定狀態之后立即看到更新的值,因為它是一個異步函式。您設定值的方式很好。移動控制臺日志;
在外面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);
或者
將其保存在useEffect具有依賴項的內部
useEffect(() => {
console.log(array2);
}, [array2]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/472063.html
