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)

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

以下是一些可能解决在 `./node_modules/vue-demi/lib/index.mjs` 中找不到 `@vue/composition-api/dist/vue-composition-api.mjs` 依赖问题的方法: ### 1. 重新安装依赖 有时候依赖没有正确安装会导致找不到依赖文件的问题,可以尝试删除 `node_modules` 目录和 `package-lock.json`(或者 `yarn.lock`)文件,然后重新安装依赖。 ```bash # 删除 node_modules 目录 rm -rf node_modules # 删除 package-lock.json 文件 rm package-lock.json # 重新安装依赖 npm install ``` ### 2. 检查依赖版本兼容性 确保 `vue-demi` 和 `@vue/composition-api` 的版本是兼容的。不同版本之间可能存在不兼容的情况,导致依赖无法正确引入。可以查看官方文档或者社区论坛,了解哪些版本是兼容的,然后调整 `package.json` 中的版本号,再重新安装依赖。 ```json { "dependencies": { "vue-demi": "合适的版本号", "@vue/composition-api": "合适的版本号" } } ``` ### 3. 手动安装依赖 如果重新安装依赖没有解决问题,可以尝试手动安装 `@vue/composition-api`。 ```bash npm install @vue/composition-api ``` ### 4. 检查文件路径 确保 `@vue/composition-api/dist/vue-composition-api.mjs` 文件确实存在于 `node_modules` 目录中。有时候文件可能因为某些原因被删除或者移动了位置。可以通过以下命令查看文件是否存在: ```bash ls node_modules/@vue/composition-api/dist/vue-composition-api.mjs ``` ### 5. 使用包管理器的修复工具 一些包管理器提供了修复依赖问题的工具,例如 `npm doctor` 或者 `yarn check`。可以尝试使用这些工具来修复依赖问题。 ```bash npm doctor ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值