axios useState不会设置状态React Vite [重复]

fafcakar  于 2023-01-30  发布在  iOS
关注(0)|答案(1)|浏览(142)
    • 此问题在此处已有答案**:

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

ux6nzvsh

ux6nzvsh1#

问题是代码实际上并没有设置状态,它只是将值记录到控制台。
要解决此问题,需要使用setAcc()方法设置帐户状态变量的值。

相关问题