2020-10-04

本文详细介绍了Vue.js中的生命周期钩子函数,包括初始化、运行和销毁阶段,以及keep-alive动态组件的activated/deactivated钩子,还有路由守卫的beforeEnter、beforeUpdate等。此外,还涵盖了自定义指令和关键概念如数据更新、组件复用等。
摘要由CSDN通过智能技术生成

Vue中的钩子函数都有哪些?

1:生命周期钩子函数

(1)初始化级阶段:

  beforeCreate   获取不到数据,没有真实DOM
  created        获取到数据,没有真实DOM
  beforeMount    获取到数据,真实DOM马上生成
  mounted        获取到数据,真实DOM生成

(2)运行阶段:

  beforeUpdate   数据更新时调用,获取到的是更新之前的数据
  Updated        数据更新是调动,获取到的是更新之后的数据

(3)销毁阶段:

  beforeDestroy  销毁前,一般在这里做一些善后工作,例如清除计时器、清除非     指令绑定的事件等等
  destroyed      已经销毁了,生命周期结束了 停止监听

2:keep-alive动态组件钩子函数

当组件在 <keep-alive> 内被切换,它的 activated 和 deactivated 这两个生命周期钩子函数将会被对应执行。

3:自定义指令钩子函数

  bind               只调用一次,指令第一次绑定到元素时调用,这个钩子函数可以定义一个在绑定是执行一次的初始化动作
  
  inserted           被绑定元素插入父节点时调用(父节点存在即可调用)。
  
  update             所在组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前,指令的值可能发生改变了,也可能没有,
                     但是你可以通过对比更新前后的值来忽略不必要的模板更新
                     
  componentUpdated   指令所在组件的 VNode 及其子 VNode 全部更新后调用
  
  unbind             只调用一次,指令与元素解绑时调用

4:路由守卫钩子函数

(1)全局路由钩子:

	//全局的前置路由守卫
		router.beforeEach((to,from,next) => {
		  //会在任意路由跳转前执行,next一定要记得执行,不然路由不能跳转了
		console.log("beforeEach")
		console.log(to,from)
		next()
   })

	//全局后置路由守卫
		router.afterEach((to,from) => {
			//会在任意路由跳转后执行
			console.log("afterEach")
		})

(2)单个路由钩子:

     只有beforeEnter,在进入前执行,to参数就是当前路由
	routes:[
		{
			path:'/foo',
			component:Foo,
			beforeEnter:(to,from,next) => {
			//.......
			}
		}
	]

(3)路由组件钩子:

   beforeRouteEnter(to,from,next){
   	//在渲染该组件的对应路由被  confirm 前调用
   	//不能  获取组件实例 "this"
   	//因为当守卫执行前,组件实例还没被创建
   },
   beforeRouteUpdate(to,from.next){
   	//在当前路由改变,但是该组件被复用时调用
   	//举例来说,对于一个带有动态参数的路径,/foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
   	//由于会渲染同样的Foo 组件,因此组件实例会被复用,而这个钩子就会在这个情况下被调用
   	//可以访问组件实例 "this"
   },
   beforeRouteLeave(to,from,next){
   	//导航离开该组件的对应路由时调用
   	//可以访问组件实例  "this"
   }
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值