复习vue(6)vue的钩子函数

160 阅读2分钟

「这是我参与2022首次更文挑战的第20天,活动详情查看:2022首次更文挑战」。

vue的钩子函数(其实就是在vue的指定状态时调用的方法)

beforeCreate // 实例初始化之后,数据观测和watch配置之前被调用,data中的数据还没有代理到vue的实例上,侦听器没有配置

created // 实例创建完成之后被调用,此时数据观测,计算属性,事件绑定,watch都已经配置完成,可以通过this访问data中的数据了,我们一般在这个钩子中发送ajax请求

beforeMount // 在挂载之前被调用,创建虚拟DOM(不是真实的DOM),是一个js对象,其中包含了它变成真正的DOM元素所需要的东西

mounted // 将vue的Vnode虚拟DOM挂载在真实DOM上。如果需要获取DOM元素操作DOM元素一般就会在这个钩子函数中去获取,ajax也可以在这里发

beforeUpdate // 只有数据发生改变的时候才会触发这个钩子,并且发生在更新视图之前

updated // 由于数据更新导致的虚拟DOM重新渲染和真实DOM打补丁(替换更改的部分),之后会调用updated钩子

beforeDestroy // 在vue实例销毁之前调用的钩子,如果页面中有定时器,要在这个钩子中清除

destroyed // vue实例被销毁之后调用的钩子,vue销毁后数据就不在是响应式的了

vm.$set(vm,'msg','ddddd') => 更改vm的数据

vm.$destroy() => 销毁vue实例的方法

vm.$mount('#app') => 手动开启挂载(vue实例没有el挂载时),动态挂载时才用的上

什么时候会触发销毁?

①:动态组件切换时,被切走的那一个组件会销毁

②:单页面应用切换路由时,上一个组件会被销毁

refs和ref

首先要在获取的元素上添加行内属性“ref= 标识符”

获取的时候使用vm.$refs.标识符 就可以获取到元素

只有一个ref的时候获取的是一个原生元素对象

有多个的时候如果是使用v-for循环出来的则获取的是一个数组

如果是手动加入的ref则获取的是最后一个

vue的DOM更新是异步的,所以如果我们在同步代码中要获取到数据更新之后的信息就要使用vm.$nextTick(callback)传入回调钩子来获取,callback会在DOM更新之后被执行

template属性:

vue的模板属性,可以在页面中写template标签来写模板然后在vue的实例或者组件的template属性中使用"#template标签的id名"来使用

这样页面就会被template标签模板的内容替代,也可以在vue实例或者组件中的template属性后面写字符串模板也没问题

注意的是:

template会替换替换掉根DOM节点

template属性只能由一个根节点,就是最外层只能有一个节点