「这是我参与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属性只能由一个根节点,就是最外层只能有一个节点