React 在 401 响应中注销用户会抛出 TypeError

问题描述 投票:0回答:0

在 API 的 401 响应中注销用户会抛出错误

简介页面

    let { token, logoutUser } = useContext(AuthContext);
    let getProfile = async () => {
    
    let response = await fetch("/profile/me/", {
    method: "GET",
    headers: {
      "Content-Type": "application/json",
      'Authorization': "Token " + String(token),
    },
  });
    if (response.status === 401) {
      console.log("Should Log out")
      logoutUser()
      
    }
    else {
      let data = await response.json();
      console.log(data);
      setProfile(data);
    }
    
  }

  useEffect(() => getProfile(), [])

AuthContext logoutUser 函数,将令牌状态设置为空,从本地存储中删除令牌,然后导航回主页

    let logoutUser = () => {
        setToken(null)
        localStorage.removeItem('token')
        navigate("/");
    }
    
    let contextData = {
        loginUser: loginUser,
        token: token,
        logoutUser: logoutUser,
    }

我收到此错误,但重新加载页面正常,导航栏上的注销按钮也正常工作

Should Log out
react-dom.production.min.js:189 TypeError: n is not a function

at tu (react-dom.production.min.js:240:251)
at ru (react-dom.production.min.js:244:163)
at Ss (react-dom.production.min.js:284:388)
at react-dom.production.min.js:282:391
at k (scheduler.production.min.js:13:203)
at MessagePort.j (scheduler.production.min.js:14:128)

di @ react-dom.production.min.js:189
react-dom.production.min.js:127 Uncaught TypeError: n is not a function
at tu (react-dom.production.min.js:240:251)
at ru (react-dom.production.min.js:244:163)
at Ss (react-dom.production.min.js:284:388)
at react-dom.production.min.js:282:391
at k (scheduler.production.min.js:13:203)
at MessagePort.j (scheduler.production.min.js:14:128)
javascript reactjs react-router react-dom
© www.soinside.com 2019 - 2024. All rights reserved.