【无标题】

一、Vue3简介

1、Vue3带来了什么?

(1)性能的提升;

(2)源码的升级;

使用Proxy代替defineProperty实现响应式;

重写虚拟DOM的实现和Tree-Shaking

(3)拥抱TypeScript

(4)新的特性

1.Composition API(组合API)

2.新的内置组件

3.其他改变

二、常用Composition API

1、初识setup

1、setup是Vue3中一个新的配置项,值为一个函数;

2、组件中所要用到的数据、方法等,均要配置在setup中;

3、setup的两种返回值:

(1):若返回一个对象,则对象中的属性、方法,均可以在模板中直接使用;

(2):若返回一个渲染函数:则可以自定义渲染内容;

setup的两个注意点:

1、setup执行时机,在beforeCreate之前执行一次,this是undefined;

2、setup的参数:

(1):props:指为对象,包含组件外部传递过来,且组件内部声明接收了的属性。

(2):context:上下文对象

attrs:值为对象,包含组件外部传递过来,但没有在props配置中声明的属性,相当于this.$attrs;

slots:收到的插槽内容,相当于this.$slots;

emit:分发自定义事件的函数,相当于this.$emit。

2、ref函数

1、作用:定义一个响应式数据

2、语法:const xxx=ref(initValue)

创建一个包含响应式数据的引用对象(reference对象,简称ref对象);

js中操作数据:xxx.value;

模块中读取数据不需要value,直接{{xxx}};

3、reactive函数

作用:定义一个对象类型的响应式数据(基本类型用ref);

语法:const 代理对象=reactive(被代理对象)接收一个对象(或数组),返回一个代理对象(proxy对象);

4、reactive和ref对比

1、从定义数据角度对比:

ref用来定义:基本数据类型;

reactive用来定义:对象(或数组)类型数据;

备注:ref也可以用来定义对象或数组类型数据,它内部会自动通过reactive转为代理对象;

2、从原理角度对比:

ref通过Object.defineProperty()的get和set来实现响应式;

reactive通过使用Proxy来实现响应式(数据劫持),并通过Reflect操作源对象内部的数据。

3、从使用角度对比:

ref定义的数据:操作数据需要.value,读取数据时模板中直接读取不需要.value;

reactive定义的数据:操作数据与读取数据均不需要.value;

5、Vue3中的响应式原理

实现原理:

通过Proxy(代理):拦截对象中任意属性的变化,包括:属性值的读写、属性的添加、属性的删除等;

6、Vue3中的计算属性和监视

计算属性(Computed Properties)

  1. 计算属性是依赖其他数据的属性,它的值根据其他属性的变化而变化。
  2. 计算属性使用 computed 配置选项定义,它可以是一个函数。
  3. 计算属性会缓存计算结果,只有依赖的数据发生变化时,才会重新计算。
  4. 计算属性可以像普通属性一样在模板中使用,不需要调用函数。
  5. 可以通过get 和 set 方法来定制计算属性的读取和设置行为。
const app = Vue.createApp({
  data() {
    return {
      radius: 5,
    };
  },
  computed: {
    circumference() {
      return 2 * Math.PI * this.radius;
    },
    area: {
      get() {
        return Math.PI * Math.pow(this.radius, 2);
      },
      set(newValue) {
        if (newValue >= 0) {
          this.radius = Math.sqrt(newValue / Math.PI);
        }
      },
    },
  },
});

监听属性(Watch):

  1. 监听属性用于观察一个或多个值的变化,并在变化发生时执行相应的函数。
  2. 监听属性使用 watch 配置选项定义,可以是一个对象,键是要 观察的属性名,值是相应的处理函数。
  3. 处理函数接收两个参数:新值和旧值。可以通过这些参数来执行相应的逻辑。
  4. 监听属性可以用于监听多个属性的变化,也可以处理异步操作。
const app = Vue.createApp({
  data() {
    return {
      message: "",
    };
  },
  watch: {
    message(newValue, oldValue) {
      console.log("New value: " + newValue);
      console.log("Old value: " + oldValue);
      // 执行相应的逻辑
    },
  },
});

计算属性和监听的使用情景:

  1. 计算属性适用于多个属性之间有依赖关系,需要根据其他属性的变化来计算出新的值的场景。
  2. 监听属性适用于需要在某个属性值发生变化时执行特定逻辑的场景,比如发送网络请求、操作 DOM 等。
  3. . 在一些情况下,计算属性和监听属性可以互相替代,但通常计算属性更适合处理简单的计算逻辑,而监听属性更适合处理复杂的逻辑。

7、Vue3中的生命周期

vue3中可以继续使用vue2中的生命周期钩子,但有两个被更名:
beforeDestroy改名为beforeUnmount;
destroyed改名为unmounted;
vue3中也提供了CompositionAPI形式的生命周期钩子,与vue2中钩子对应关系如下:
beforeCreate=>setup()
created=>setup()
意思是setup相当于beforeCreate和created,所以不用往setup中放;
beforeMount=>onBeforeMount
mounted=>onMounted
beforeUpdate=>onBeforeUpdate
updated=>onUpdated
beforeUnmount=>onBeforeUnmount
unmounted=>onUnmounted

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值