Vue声明与生命周期

【1】Vue声明式渲染、条件与循环、事件绑定、双向绑定
1、{{ message }}
2、v-if
3、v-for
4、v-on:click
5、v-model
在这里插入图片描述

在这里插入图片描述
vue的生命周期

一共8个阶段

  1. beforeCreate (创建前)
  2. created (创建后)
  3. beforeMount (载入前)
  4. mounted (载入后)
  5. beforeUpdate (更新前)
  6. updated (更新后)
  7. beforeDestroy (销毁前)
  8. destroyed (销毁后)

vue第一次页面加载会触发的几个钩子函数

beforeCreate、created、 beforeMount和 mounted

DOM渲染在mounted周期中就已经完成

在这里插入图片描述
mounted
1 .在mounted里面修改data里面的数据,并不是想要的直接就拿mounted里面的修改过的值渲染界面,而是还会先拿data里面的初始值进行渲染,然后走beforeUpdate这里拿新的数据进行渲染
2 .这是不是说如果想要修改data里面的数据,要在beforeMounted的时候修改呢
3 .其实beforeMounted也是先按照默认值进行渲染,如果beforeMounted里面修改数据比较慢的话,他是不会等着的,还是会直接执行下一个生命周期函数。也就是说所有的生命周期函数之间没有done的操作
4 .如果在beforeMounted里面加一个setInterval()来延迟修改值的话,也会触发beforeMounted函数
5 .往下看其实发现在mounted生命周期之前修改data里面的数据都是在修改虚拟dom,直到mounted之后任何修改才会被渲染到页面上。
6 .所以理论上只要在mounted之前修改数据都行,比如mounted里面进行ajax请求,也是这个原理
7 .这个还需要再看下源码,应该就能记得比较清楚
8 .挂载页面。
beforeCreate
1 .进行初始化事件,this指向创建的实例
2 .不能访问到data
3 .不能访问computed
4 .不能访问watch
5 .不能访问methods
6 .以上的方法和数据
7 .用来初始化非响应变量
created钩子
1 .实例创建完成
2 .数据已经和data属性绑定,此时放在data中的属性值发生改变的同时,视图也会改变
3 .可以初始化ajax请求了
4 .可以访问data
5 .可以访问computed
6 .可以访问watch
7 .可以访问methods
8 .可以访问到以上的方法和数据
9 .未挂载到DOM
10 .不能访问到ref属性内容为空数组
beforeMount
1 .判断是否有el选项,有就继续,没有就停止编译,除非调用vm.$moune(el)
2 .是否有template参数选项
1 .有template参数选项,将模板编译为render函数
2 .没有template选项,将外部html作为模板编译
3 .template中的模板优先级要高于outer HTML的优先级

<body>
  <div id="app">
    <!--html中修改的-->
    <h1>{{message + '这是在outer HTML中的'}}</h1>
//有template属性的时候这个就不会被渲染了
  </div>
</body>
<script>
  var vm = new Vue({
    el: '#app',
    template: "<h1>{{message +'这是在template中的'}}</h1>", //在vue配置项中修改的
    data: {
      message: 'Vue的生命周期'
    }
</script>

3 .如果Vue对象中还有一个render函数的话,那么又会先渲染render函数里面的内容。所以这是有优先级的
4 .模板编译完成,但是未挂载,无法获取dom
5 .给实例对象添加 e l 成 员 6. 在 挂 载 开 始 前 被 调 用 , 在 b e f o r e M o u n t 之 前 , 会 找 到 对 应 的 t e m p l a t e , 并 编 译 成 r e n d e r 函 数 ∗ ∗ m o u n t e d ∗ ∗ 1. 在 m o u n t e d 之 前 还 是 通 过 m e s s a g e 进 行 占 位 的 , 因 为 还 没 有 挂 载 到 页 面 上 , 还 是 在 j s 中 以 虚 拟 d o m 形 式 存 在 的 2. m o u n t e d 之 后 换 成 了 我 们 想 要 的 样 子 3. 实 例 挂 载 到 D O M 上 , 此 时 可 以 通 过 D O M a p i 获 取 到 D O M 节 点 。 4. el成员 6 .在挂载开始前被调用,在beforeMount之前,会找到对应的template,并编译成render函数 **mounted** 1 .在mounted之前还是通过{{message}}进行占位的,因为还没有挂载到页面上,还是在js中以虚拟dom形式存在的 2 .mounted之后换成了我们想要的样子 3 .实例挂载到DOM上,此时可以通过DOM api获取到DOM节点。 4 . el6.beforeMounttemplaterendermounted1.mountedmessagejsdom2.mounted3.DOMDOMapiDOM4.ref属性可以访问
5 .常用于获取VNode信息ajax请求
beforeUpdate
1 .当data中的数据发生了改变,会触发对应组件的重新渲染
2 .响应式数据更新时调用,发生在虚拟dom打补丁之前
3 .适合在试图更新之前访问现有dom,比如手动移除或者添加事件监听器
updated
1 .虚拟dom重新渲染和打补丁之后调用,组件dom已经更新,可执行依赖dom的操作
2 .避免在这个钩子中操作数据,不然可能陷入死循环
beforeDestory
1 .实例销毁之前调用,这一步实例仍然可以使用,this仍然可以获取实例
2 .常用于销毁定时器,解绑全局事件,销毁插件对象等操作
destoryed
1 .实例销毁之后调用,调用后,Vue实例指示的所有东西都会解绑,所有事件监听器都会被移除,所有子实例也会被销毁、
注意
1 .created阶段的ajax请求和mounted阶段请求的区别:前者页面未出现,如果请求消息太多,页面会长时间处于白屏状态
2 .mounted不会承诺所有的子组件也都一起被挂载。如果希望等到整个视图都被渲染完毕,可以使用this.$nextTick

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3声明组件生命周期的语法有所变化。Vue 3引入了Composition API,它提供了一种新的方式来组织和重用组件逻辑。 在Composition API,可以使用`setup`函数来声明组件的生命周期钩子。`setup`函数是一个在组件实例创建之前执行的函数,它接收两个参数:`props`和`context`。 下面是Vue 3常用的生命周期钩子的声明语法: - `beforeCreate`:在组件实例创建之前执行,Vue 3可以使用`setup`函数的逻辑来替代。 - `created`:在组件实例创建完成后执行,Vue 3可以使用`setup`函数的逻辑来替代。 - `beforeMount`:在组件挂载到DOM之前执行,Vue 3可以使用`onBeforeMount`函数来声明。 - `mounted`:在组件挂载到DOM后执行,Vue 3可以使用`onMounted`函数来声明。 - `beforeUpdate`:在组件更新之前执行,Vue 3可以使用`onBeforeUpdate`函数来声明。 - `updated`:在组件更新之后执行,Vue 3可以使用`onUpdated`函数来声明。 - `beforeUnmount`:在组件卸载之前执行,Vue 3可以使用`onBeforeUnmount`函数来声明。 - `unmounted`:在组件卸载后执行,Vue 3可以使用`onUnmounted`函数来声明。 除了上述常用的生命周期钩子,Vue 3还引入了一些新的生命周期钩子,例如`onRenderTracked`和`onRenderTriggered`,用于追踪组件的渲染和依赖变化。 需要注意的是,在Vue 3生命周期函数的命名空间发生了变化,以更好地与Composition API结合使用。因此,在Vue 3,建议使用新的生命周期钩子声明语法来编写组件的逻辑。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值