Vue2-组件化基础、生命周期和钩子函数

1、Vue2-组件化基础

在大型应用开发的时候,页面可以划分成很多部分。往往不同的页面,也会有相
同的部分。
例如可能会有相同的头部导航。
但是如果每个页面都自开发,这无疑增加了我们开发的成本。所以我们会把页面
的不同分拆分成立的组件,然后在不同页面就可以共享这些组件,避免重复开发。
在vue里,所有的vue实例都是组件。

img

写一个统计点了多少次的功能:

img

我们要经常使用这个功能,就可以将他抽取为一个组件:

全局声明注册一个组件

通过Vue的component方法来注册组件:

template:模板

img

以前是通过el来挂载div,现在是直接注册为组件,实现复用。

组件其实也是一个vue实例,因此它在定义时也会接收:data、methods、生命周期函等。

不同的是组件不会与页面的元素綁定,否则就无法复用了,因此没有el属性。
但是组件渲染需要html模板,所以增加了template属性,值就是HTML模板
全局组件定义完毕,任何vue实例都可以直接在HTML中通过组件名称来使用组件了
data必须是一个函数,不再是一个对象。

局部声明注册一个组件

实例里面需要用到哪些组件,都需要写在components:{}里面,结构是k:v (定义名:组件名),然后在要用的地方<定义名>使用即可。

在这里插入图片描述

2、生命周期和钩子函数

每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。

比如 created 钩子可以用来在一个实例被创建之后执行代码:

new Vue({
  data: {
    a: 1
  },
  created: function () {
    // `this` 指向 vm 实例
    console.log('a is: ' + this.a)
  }
})
// => "a is: 1"

也有一些其它的钩子,在实例生命周期的不同阶段被调用,如 mountedupdateddestroyed。生命周期钩子的 this 上下文指向调用它的 Vue 实例。

不要在选项 property 或回调上使用箭头函数,比如 created: () => console.log(this.a)vm.$watch('a', newValue => this.myMethod())。因为箭头函数并没有 thisthis 会作为变量一直向上级词法作用域查找,直至找到为止,经常导致 Uncaught TypeError: Cannot read property of undefinedUncaught TypeError: this.myMethod is not a function 之类的错误。

生命周期图示

下图展示了实例的生命周期。你不需要立马弄明白所有的东西,不过随着你的不断学习和使用,它的参考价值会越来越高。

Vue 实例生命周期

案例:

在这里插入图片描述

img

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 2 和 Vue 3 的生命周期钩子函数有一些共同点,但也存在一些差异。以下是Vue 2和Vue 3的主要生命周期阶段以及对应的钩子函数: **Vue 2 生命周期钩子函数:** 1. **创建前 (beforeCreate)** - `beforeCreate`:实例刚被创建但还未挂载到DOM上。 2. **创建完成 (created)** - `created`:组件已完全创建,并且数据已经初始完毕。 3. **挂载前 (mounted)** - `mounted`:组件已挂载到DOM上并已插入,此时可以操作DOM元素了。 4. **更新 (updated)** - `data`变会触发`updated`,但是不会触发`render`。 5. **渲染之前 (beforeUpdate)** - 新的`VNode`准备渲染时调用,但数据还没改变。 6. **渲染完成 (rendered)** - 数据发生变后的每次更新都会先调用`render`,然后触发`updated`。 7. **卸载 (beforeDestroy)** - 组件即将销毁但仍存在于DOM中,可以在此做清理工作。 8. **销毁 (destroyed)** - 组件已被移除并从DOM中卸载。 **Vue 3 生命周期钩子函数的变:** Vue 3 引入了一些新的生命周期钩子和改进: 1. **setup()**: 这是单文件组件(SFC)的新特性,它取代了部分旧钩子,如`created`、`beforeDestroy`等,用于执行组件的初始逻辑。 2. **onBeforeMount(), onMounted(), onBeforeUnmount()**: 分别对应于`beforeCreate`, `created`, `beforeDestroy`,但更清晰地表示特定状态。 3. **不再推荐使用$watch**: 在Vue 3中,建议使用`reactive`或自定义`computed`代替。 4. **响应式系统优**: Vue 3引入了更强大的响应式系统,使得数据更改的检测更为高效。 **相关问题--:** 1. Vue 3 中的 setup 函数是如何工作的? 2. 在Vue 3中为什么要弃用 $watch? 3. Vue 2和Vue 3在生命周期管理上有哪些主要区别?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值