vue项目如何刷新当前页面

1.场景

在处理列表时,常常有删除一条数据或者新增数据之后需要重新刷新当前页面的需求。

2.遇到的问题

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

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

3.解决方法

provide / inject 组合

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

 

App.vue:

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

 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 }    

 

转载于:https://www.cnblogs.com/again297/p/10506939.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值