Vue项目如何刷新当前页面

别来无恙 提交于 2019-12-24 18:06:51

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

一、场景:

项目需求是:在课程详情页 点击 相关课程 还在当前页面看此课程详情;

功能实现:这时候点击相关课程需要重新加载刷新当前路由

二、’解决的办法及遇到的问题

  1. this.$router.go(0)。这种方法虽然代码很少,只有一行,但是体验很差。页面会一瞬间的白屏,体验不是很好
  2. 用vue-router重新路由到当前页面,页面是不进行刷新的。
  3. .location.reload()。这种也是一样,画面一闪,体验不是很好

三、推荐解决方法:

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

1.在App.vue,声明reload方法,控制router-view的显示或隐藏,从而控制页面的再次加载。

<template>
  <div id="app">
	<router-view v-if="isRouterAlive"/>
  </div>
</template>

<script>
export default {
  name:"app",
  provide(){
	return{
	  reload:this.reload
	}
  },
  data(){
	return{
	  isRouterAlive:true //控制router-view的显示或隐藏
	}
  },
  methods:{
	reload(){
	  this.isRouterAlive = false;
	  this.$nextTick(()=>{
		this.isRouterAlive = true;
	  })
	}
  }
}
</script>

2.在需要用到刷新的页面中注入App.vue组件提供(provide)的 reload 依赖,在逻辑完成之后,直接this.reload()调用,即可刷新当前页面。

注入reload方法

直接调用 this.reload

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!