Vue添加自动刷新功能

前言
        在实际开发中,当页对数据库进行增删改的过程中,vue不会对DOM进行渲染,因此要用刷新来重新查询显示这些数据。
        解决方法就是用provide / inject 组合,其作用是允许一个祖先组件向其所有子孙后代组件注入一个依赖,不论组件层次有多深,在上下游关系成立的时间里始终生效。因此会想到App.vue是所有页面的父组件及组件的祖先组件,所以肯定跟App.vue有关系。

解决方案

        打开App.vue : 声明reload方法,控制router的显示或隐藏,从而控制页面的再次加载。

<!--App.vue-->
<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,//显示状态
	      }
    	},
    	methods:{
	      reload(){
	        this.isRouterAlive = false;
	        this.$nextTick(function(){
	          this.isRouterAlive = true ;
	        })
	      },
	    
    	}
	}
</script>

        子孙组件:
                利用 inject 在页面注入App.vue组件提供(provide)的 reload 依赖,在逻辑代码完成后(增删改)直接this.reload(); 调用即可刷新当前页面。

<script>
	
	export default{
		name:'home',
		inject:['reload']//在根节点上写
		methods:{
			deleteStudent(){
				//...请求后台进行删除操作
				//刷新页面
				this.reload();
			}
		}
	}
</script>
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值