vue

Vue项目,实现页面刷新功能,局部刷新。不是刷新整个网页。非wi

2021-09-17  本文已影响0人  默默无闻的小人物

前言

在开发vue项目过程中,因为项目原因需要实现局部刷新操作。就比如最常见的管理系统。左边是菜单,右边一大块是路由区域。因为如果使用window.location.x的方式的话会导致整个网页刷新。造成数据跟状态的丢失、这并不是我们想要的。因为毕竟这是个单页应用。只是需要局部刷新而已。既刷新路由区域。

思路

因为vue路由切换的时候数据都会重新刷新。所以我们就利用这个

// redirect.vue 组件就这么简单,就只有这么点内容。目的只是用于重定向
<script>
export default {
  created() {
    const { params, query } = this.$route
    const { path } = params
    this.$router.replace({ path: '/' + path, query })
  },
}
</script>

// router.js
const routes = [
  // 重定向,用于实现刷新操作
  {
    path: '/redirect/:path(.*)',
    component: () => import('../views/redirect.vue'),
  },
  {
    path: '/',
    name: 'login',
    meta: {title: '登录页' },
    component: () => import('../views/login.vue')
  }]

以后我们需要刷新则只需要导航到/redirect下

// 刷新当前页面
    refreshSelectedTag() {
      this.$nextTick(() => {
        this.$router.replace({
          path: '/redirect' + this.selectedTag.path,
        })
      })
    },

注意:this.selectedTag.path是你需要刷新的路由

第二种实现思路,在router-view使用v-if

上一篇下一篇

猜你喜欢

热点阅读