Vue - 重载组件的方法

Vue重载组件(常用)

activated / inject

  • activated()/deactivated()
    当我们想要在进入一个组件和离开这个组件时执行一些方法的时候,如果这个组件被<keep-alive />包裹,就可以使用这两个钩子函数,activated在组件一被加载时调用,deactivated在一离开组件是调用。

    配合v-if使用可以实现组件的重载,在页面进入时设为true离开时再设为false

    <baidu-map
      v-if="mapReload" />
 	activated() {
      // 进入activate组件时
      this.mapReload = true
      this.doSomething()
    },
    deactivated() {
      // 离开activate组件时
      this.mapReload = false
      this.doSomething()
    },
  • provide/inject
    当我们想在任何时候刷新这个页面时,例如当ajax请求完成时需要重载页面以获得更新,如果用location.reload()体验感会很差,相当于用户刷新了这个页面。而采用provide/inject 这种方式原理是将<router-view/>先隐藏再显示,达到重新渲染路由区域的效果,体验感极好
	// 首先需要在 App.vue中
	<router-view v-if="isRouterAlive" />

	// <script>
	provide() {
	   return {
	      reload: this.reload
	   }
	},
	data() {
	   return {
	      isRouterAlive: true
	   }
	},
	methods: {
	   reload() {
	      this.isRouterAlive = false
	      this.$nextTick(() => {
	        this.isRouterAlive = true
	      })
	   }
	}
	// 之后在任何页面都可以通过依赖注入的方式引入this.reload方法直接调用
	// <script>
	inject: ['reload'],
	data() {
		return {
		
		}
	}
	method() {
		this.$get('path').then(res => {
			this.reload()
		})
	}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChristmasFox&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值