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

vue

vue-不刷新的情况下重新加载页面">Vue 不刷新的情况下重新加载页面

使用场景:

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


我遇到的情况:

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

//缴费完成后页面刷新,重新加载缴费情况

location.reload()

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

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

用provide / inject 组合

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

这种情况下,就要在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#:~:text=在App.vue%2C声明reload方法,控制router-view的显示或隐藏,从而控制页面的再次加载。

以上是 Vue 重新加载页面(不刷新) 的全部内容, 来源链接: utcz.com/z/379448.html

回到顶部