vue项目如何刷新当前页面

1.场景vue

在处理列表时,经常有删除一条数据或者新增数据以后须要从新刷新当前页面的需求。vue-router

2.遇到的问题浏览器

1. 用vue-router从新路由到当前页面,页面是不进行刷新的app

2.采用window.reload(),或者router.go(0)刷新时,整个浏览器进行了从新加载,闪烁,体验很差ide

3.解决方法this

provide / inject 组合spa

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

 

App.vue:router

声明reload方法,控制router-view的显示或隐藏,从而控制页面的再次加载blog

 1 <template>
 2   <div id="app">
 3     <router-view v-if="isRouterAlive"></router-view>
 4   </div>
 5 </template>
 6 
 7 <script>
 8  export default {  9  name: 'App', 10  provide(){ 11       return{ 12  reload:this.reload, 13  } 14  }, 15  data(){ 16       return{ 17  isRouterAlive:true, 18  } 19  }, 20  methods:{ 21  reload(){ 22         this.isRouterAlive = false ; 23         this.$nextTick(function(){ 24           this.isRouterAlive = true ; 25  }) 26  } 27  } 28  } 29 </script>

tableList.vue:

在页面注入App.vue组件提供(provide)的 reload 依赖,在逻辑完成以后(删除或添加...),直接this.reload()调用,便可刷新当前页面。

 1 export default {  2  inject:['reload'],//注入reload方法  3  data() {  4  return{}  5  },  6  methods:{  7  add(){  8  .then(res => {  9  if (res.err_code == 0) { //数据请求成功后 10  this.reload() //调用reload方法刷新当前页面 11  } 12  }) 13  .catch(res => { 14  console.log(res); 15  }); 16  } 17  } 18 }
相关文章
相关标签/搜索