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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM