Vue3中的Composition-Api

本文将介绍Vue3中的新增杀器 —— Composition API : 一组低侵入式的、函数式的 API,它使我们能够更灵活地「组合」组件的逻辑。

在这里插入图片描述

如上图,在较大组件的编写中, Composition-Api 可以把复杂组件的逻辑抽地更紧凑,而且可以将公共逻辑进行抽取。

 setup 它为基于 Composition API 的新特性提供了统一的入口。

Composition-Api

1.reactive()

reactive() 函数接收一个普通的对象,返回出一个响应式对象。

在Vue2.x的版本中,我们只需要在 data() 中定义一个数据就能将它变为响应式数据,在 Vue3.0 中,需要用 reactive 函数或者 ref 来创建响应式数据。
// 在组件库中引入 reactive
import { reactive } from 'vue'

setup() {
    // 创建响应式对象
    const state = reactive({
        count:0
    });

    // 将响应式对象return出去,暴露给模板使用
    return state;
}
  • 使用响应式对象
<template>
	  <p>当前的count的值为:{{ data.count }}</p>
	  <button @click="data.count++">点击增加count</button>
</template>

2.ref

ref() 函数可以根据给定的值来创建一个响应式的数据对象,返回值是一个对象,且只包含一个 .value 属性。

// 引入 ref
import { ref } from "vue";

setup() {
    // 创建响应式对象
    const count = ref(0);

    return {
        count
    }
}
  • 使用响应式对象
<template>
	  <p>当前的count的值为:{{ count }}</p>
	  <button @click="count++">点击增加count</button>
</template>
  • 注意事项
    1.在 setup 函数内使用ref后返回的是一个 RefImpl 的对象 , 需要使用 .value 访问

    	  // 使用ref
    	    let count = ref(0); 
    	    // 获取count的值 --- 函数内部
    	    console.log(count.value);   //0
    

    在模板上直接使用 count 访问即可

    2.可以在 reactive 对象中访问 ref() 函数创建的响应式数据。

    3.新的 ref() 会覆盖旧的 ref()

3. computed()

computed() 用来创建计算属性,返回值是一个 ref() 实例。按照惯例,使用前需要先引入。

  • computed创建只读计算属性
 // 3.使用computed来创建一个计算属性 
    const count = ref(1);
    // 创建一个计算属性 使其值比 count 大 1
    // 创建只读属性
    let bigCount = computed(()=>{
      console.log('a')
      return count.value+1
    })
    console.log(bigCount.value)
    bigCount.value++   //报错

在这里插入图片描述

  • computed 创建一个可读可写的属性
	 // 创建一个可读可写的计算属性 传入对象
    var bigCount = computed({
      get:()=>{
        console.log('有人读取了bigCount属性');
        return count.value+1;
      },
      set:val=>{
        console.log('有人设置了bigCount属性',val);
        return val
      }
    })
    console.log(bigCount.value)
    bigCount.value = 2;
    console.log(bigCount.value)

控制台输出
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值