- 此问题在此处已有答案**:
The useState set method is not reflecting a change immediately(15个答案)
3天前关闭。
当前遇到问题,无法将状态分配给useState常量变量。
const [account, setAcc] = useState({});
const [logged, setLogg] = useState(false);
useEffect(() => {
console.log("app");
let jwt = localStorage.getItem("jwt");
let username = localStorage.getItem("username");
console.log(username + jwt);
const API_URL = "https://localhost:7129/api/Users/ByUsername?username=";
if (jwt != "" && username != "") {
axios
.get(API_URL + username, {
headers: authHeader(),
})
.then((res) => {
console.log("passed");
console.log(res.data);
setAcc(res.data);
console.log(account);
setAccount(res.data);
console.log(account);
setLogged();
redirect("/index/");
})
.catch((res) => {
if (res.status == 401) {
setLogout();
localStorage.removeItem("jwt");
localStorage.removeItem("username");
redirect("/login/");
}
});
}
}, []);
function setAccount(param) {
console.log(param);
setAcc(param);
}
正如你所看到的控制台图像我已经附上,我设置控制台日志命令的每一步.当来完成GET我会显示在输出"passed",然后它会打印输出www.example.com,然后它会尝试设置状态通过方法.response.data and then it will try to set state through method.
console
1条答案
按热度按时间ux6nzvsh1#
问题是代码实际上并没有设置状态,它只是将值记录到控制台。
要解决此问题,需要使用setAcc()方法设置帐户状态变量的值。