vue项目刷新当前页面的三种方法
1、直接刷新
1 2
| window.location.reload() this.$router.go(0)
|
缺点:这两种刷新方式,相当于按ctrl+F5
强制刷新。
2、临时页面
新建一个空白页面,点击确定的时候先跳转到这个空白页,然后再立马跳转回来。这个方式,相比第一种不会出现一瞬间的空白页,只是地址栏有个快速的切换的过程,也可采用。
3、子组件调取路由页面刷新方法
provide / inject 刷新相对比较理想
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| //首先在app.vue进行修改 或者相对于模块路由页面上修改 <template> <div id="app"> // 控制router-view的显示或隐藏,从而控制页面的再次加载 <router-view v-if="isRouterAlive"/> </div> </template>
<script> export default { name: "App", provide() { return { reload : this.reload, } }, data() { return { isRouterAlive:true, }; }, created(){}, methods: { // 通过声明reload方法,控制router-view的显示或隐藏,从而控制页面的再次加载 reload(){ this.isRouterAlive = false; this.$nextTick(() => { this.isRouterAlive = true; }) }, }, }; </script>
|
在需要刷新的页面引入后直接调用即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <template> <div> <el-button icon="el-icon-refresh" @click="refresh">点击刷新</el-button> </div> </template> <script> export default { //引用vue reload方法 inject: ['reload'], methods: { refresh () { this.reload() } } } </script>
|
这样就实现了子组件调取reload方法就实现了刷新vue组件的功能,而且实现了组件跨越层级传递数据方法。