Loading

Vue 重新加载页面(不刷新)

Vue 不刷新的情况下重新加载页面

使用场景:

​ 当我们在项目中,会遇到一些要修改数据库的数据后并重载页面,显示修改后最新的数据情况。


我遇到的情况:

我的Vue项目中使用了element-ui中的导航栏组件。我想要重载页面后,路由还是指向当前导航栏所选中的哪一项。在要刷新重载页面时,我用了:

//缴费完成后页面刷新,重新加载缴费情况
location.reload()

看似没啥问题,但是当他刷新后,导航栏的选中又回到了default-active项,且路由也跟着变回了default所指的那个页面。这就没有达到我要的效果。

于是我就上网查找适合的方法。找到一个方法完美的解决了我的问题。

用provide / inject 组合

原理:允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效

01Vue页面重载

这种情况下,就要在Main_student.vue中声明reload方法,控制router-view的显示或隐藏,从而控制页面的再次加载。

<template>
<div>
  <!--指定组件的呈现位置-->
  <router-view v-if="isRouterAlive"></router-view>
</div>
</template>

<script>
export default {
  name: "Main_student",
  provide () {
    return {
      reload: this.reload
    }
  },
  data () {
    return {
      isRouterAlive: true
    }
  },
  methods: {
    reload() {
      this.isRouterAlive = false
      this.$nextTick(function () {
        this.isRouterAlive = true
      })
    }
  },
}
</script>

在需要用到刷新(页面重载)的页面。在页面注入祖先组件提供(provide)的 reload 依赖,在逻辑完成之后(删除或添加…),直接this.reload()调用,即可刷新当前页面。

注入reload方法

export default {
  inject: ['reload'],

   methods:{
      update(){
        	// 在需要用到的事件中调用this.reload();函数即可
            this.reload()    
        }      
    } 
 }

参考博文:https://www.cnblogs.com/leng12/p/xiaoleng.html

posted @ 2021-11-18 20:52  KledKled  阅读(2237)  评论(0编辑  收藏  举报