VUE “无感”刷新页面

vue 无感刷新当前页面,主要方法如下

修改App.vue, 修改如下

<template>
  <div id="app">
    <router-view v-if="isRouterAlive" />
  </div>
</template>
<script>
export default {
  name: 'App',
  provide () {
    return {
      reload: this.reload
    }
  },
  data () {
    return {
      isRouterAlive: true
    }
  },
  methods: {
    reload () {
      this.isRouterAlive = false
      this.$nextTick(function () {
        this.isRouterAlive = true
      })
    }
  }
}
</script>

然后再对应的组件里面使用如下,首先在子组件中inject注入进去,在需要的地方,直接调用this.reload()即可

export default {
    name: 'Layout',
    inject: ['reload'],
    components: {
      Navbar,
      Sidebar,
      AppMain,
      HeadMenu
    },
    methods: {
       flush() {
           this.reload()  //通过inject注入进来的
       }
    }
}

 

### 实现无感刷新页面的最佳实践 在 Vue.js 应用程序中实现无感刷新页面的关键在于处理好 token 的自动更新机制。通过合理的设计可以确保用户体验流畅,同时保障安全性。 #### 利用响应拦截器进行 Token 自动刷新 一种推荐的方式是在 HTTP 请求的响应拦截器内完成此操作。每当接收到由于 token 过期而导致的身份验证错误时,在发送新请求之前尝试获取最新的访问令牌[^1]。这种方式不需要频繁轮询服务端来保持 session 活跃状态,从而减少了不必要的网络流量开销并提高了效率。 ```javascript axios.interceptors.response.use( response => { return response; }, error => { const originalRequest = error.config; if (error.response.status === 401 && !originalRequest._retry) { originalRequest._retry = true; // 调用刷新token接口 return axios.post('/auth/refresh-token', { refreshToken: localStorage.getItem('refreshToken') }) .then(res => { if (res.data.accessToken) { localStorage.setItem('accessToken', res.data.accessToken); // 更新当前请求头中的Authorization字段 originalRequest.headers['Authorization'] = 'Bearer ' + res.data.accessToken; // 重新发起原请求 return axios(originalRequest); } }); } return Promise.reject(error); } ); ``` 这种方法不仅解决了因 token 失效而造成的未授权问题,还能够有效防止因为客户端时间和服务器时间不同步所引发的一系列潜在风险。 #### 存储 Refresh_Token 并安全使用 当用户首次成功登录后,除了常规的 access_token 外还需要获得 refresh_token,并将其妥善存储起来以便后续用于换取新的 access_token[^2]。需要注意的是,为了提高系统的安全性,应该采取适当措施保护这些敏感数据免受攻击者的窃取或篡改。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值