react如何刷新当前页面_如何在React中刷新页面后使用localStorage来维护状态

每次用户登录时,即使页面重新加载,我也希望状态保持为“true” . 状态最初设置为false,(让_authed = false) . 但是当我重新加载页面时,它会返回false,这是索引页面 .

What i did 当用户登录时,我将用户的详细信息保存在localStorage中,当用户注销时,我清除了localStorage并将其设置为false . (这很好)

在setAuthed()函数中,我试图检查我在localStorage中存储的用户是否为null,它应该将authed变量保持为true .

但是当我刷新页面时它不起作用 . 有什么事,我做错了吗?帮助赞赏 .

let _authed = false;

// User logs in, set user in localStorage

saveUser(user){

_user = user;

localStorage.setItem('user', JSON.stringify(user))

},

//User clicks logout, set state to false

setLogout(){

_authed = false;

localStorage.clear()

},

// If there is a user in local storage, always set state to true

setAuthed(){

if (localStorage.getItem("user") !== null) {

_authed = true;

}

},

getAuthed(){

return _authed;

},

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React使用Axios的过程,如果要刷新Token并重新请求接口,可以采用以下两种方式: 1.使用拦截器:Axios提供了interceptors拦截器,可以在请求或响应被处理前对它们进行全局的拦截和处理。可以在请求拦截器判断Token是否过期,如果过期,则先刷新Token,然后再重新发起请求。示例代码如下: ``` axios.interceptors.request.use( (config) => { const token = localStorage.getItem("token"); if (token) { // 判断Token是否过期,如果过期则刷新Token const decodedToken = jwt_decode(token); const currentTime = Date.now() / 1000; if (decodedToken.exp < currentTime) { // 刷新Token的代码 } config.headers.Authorization = `Bearer ${token}`; } return config; }, (error) => { return Promise.reject(error); } ); ``` 2.使用Promise.all():Promise.all()方法接收一个Promise对象的数组作为参数,并返回一个新的Promise对象。当所有的Promise对象都成功时,新的Promise对象才会成功;当有一个Promise对象失败时,新的Promise对象就会失败。可以在Promise.all()方法同时发起原始请求和刷新Token的请求,当Token刷新后再重新发起原始请求。示例代码如下: ``` const refreshTokenPromise = axios.post("/api/refreshToken"); const originalPromise = axios.get("/api/someApi"); Promise.all([refreshTokenPromise, originalPromise]) .then((responses) => { const originalResponse = responses[1]; // 处理原始请求的响应数据 }) .catch((error) => { // 处理错误 }); ``` 以上是两种处理方式,你可以根据实际情况选择适合自己的方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值