Vue 3组合式API深度剖析:核心API使用指南

目录

一、什么是组合式API?

二、核心API介绍

1.setup()

2.ref()和reactive()

3.computed()

4.readonly()

5.watch()和watchEffect()

    关于 watchEffect()

6.watchPostEffect()和watchSyncEffect()

7.provide()和inject()


一、什么是组合式API?

        在Vue 2中,我们主要使用选项式API(Options API)来组织组件。选项式API将组件的不同部分(如data、methods、computed等)按照特定的选项进行划分。然而,随着组件复杂度的提升,这种划分方式可能导致逻辑分散,难以维护。

        组合式API则提供了一种新的方式来组织组件逻辑。它将组件的逻辑拆分成多个独立的函数(或称为“组合函数”),每个函数都负责处理组件的某个方面。这种方式使得逻辑更加集中,更易于复用和维护。

二、核心API介绍

1.setup()

         setup()是组合式API的入口函数,它在组件创建之前被调用,用于初始化组件的状态和方法。在setup()中,我们可以使用其他组合式API来定义组件的逻辑。

示例:

import { ref, computed } from 'vue';  
  
export default {  
  setup() {  
    const count = ref(0);  
    const doubled = computed(() => count.value * 2);  
  
    function increment() {  
      count.value++;  
    }  
  
    return {  
      count,  
      doubled,  
      increment,  
    };  
  },  
};

2.ref()和reactive()

         ref()reactive()是用于创建响应式数据的API。ref()用于创建单个响应式数据,而reactive()用于创建响应式对象。

示例:

import { ref, reactive } from 'vue';  
  
const count = ref(0); // 创建一个响应式数据,初始值为0  
const state = reactive({ name: 'Vue', version: 3 }); // 创建一个响应式对象

3.computed()

  computed()用于创建计算属性,它基于其他响应式数据动态计算值。当依赖的数据发生变化时,计算属性会自动更新。

示例:

import { ref, computed } from 'vue';  
  
const count = ref(1);  
const doubled = computed(() => count.value * 2); // 当count变化时,doubled也会自动更新

4.readonly()

        readonly()是Vue 3组合式API的一个核心函数,用于创建只读的响应式对象。它接收一个对象作为参数,并返回一个具有相同结构但属性只读的代理对象。尝试修改此代理对象会触发警告,而不会真正影响原始对象。这有助于保护数据的完整性,确保数据不被意外修改。

示例:

import { readonly } from 'vue';  
  
const myObject = { name: 'Alice', age: 25 };  
const readonlyObject = readonly(myObject);  
  
// 尝试修改只读对象的属性会失败  
readonlyObject.name = 'Bob'; // 这里会报错,因为只读对象的属性无法被修改

5.watch()和watchEffect()

  watch()watchEffect()用于监听响应式数据的变化,并在数据变化时执行回调函数。watch()需要明确指定要监听的数据和回调函数,而watchEffect()则会自动收集依赖并执行回调函数。

示例:

import { ref, watch, watchEffect } from 'vue';  
  
const count = ref(0);  
  
watch(count, (newVal, oldVal) => {  
  console.log(`count changed from ${oldVal} to ${newVal}`);  
});  
  
watchEffect(() => {  
  console.log(`count is ${count.value}`);  
}); // 当count变化时,这个回调函数会自动执行
    关于 watchEffect()

        副作用函数        

        传递给 watchEffect 的函数被称为“副作用函数”。这个副作用函数通常包含了需要在响应式数据变化时执行的代码逻辑。这使得 watchEffect 特别适合处理异步操作,如发起网络请求。

        自动收集依赖

        watchEffect 的一个关键特性是它能够自动收集依赖。这意味着你不需要显式地告诉它要监听哪些数据,它会自动跟踪在副作用函数中使用的响应式数据,并在这些数据变化时重新运行副作用函数。

        停止监听

        与 watch 不同,watchEffect 返回的是一个清除函数,用于手动停止监听。如果你需要停止监听,可以调用这个清除函数。

示例:

const stop = watchEffect(() => {  
  // ... 副作用逻辑  
});  
  
// 停止监听  
stop();

6.watchPostEffect()和watchSyncEffect()

watchEffect() 使用 flush: 'post' 和使用 flush: 'sync' 选项时的别名。

默认情况下,侦听器将在组件渲染之前执行。设置 flush: 'post' 将会使侦听器延迟到组件渲染之后再执行。详见回调的触发时机。在某些特殊情况下 (例如要使缓存失效),可能有必要在响应式依赖发生改变时立即触发侦听器。这可以通过设置 flush: 'sync' 来实现。然而,该设置应谨慎使用,因为如果有多个属性同时更新,这将导致一些性能和数据一致性的问题。

7.provide()和inject()

详见另一篇博客基于Vue3组合式API:依赖注入使用技巧(Provide&Inject)

希望本文的介绍能够帮助你更好地理解和应用Vue 3中的组合式API。如果你有任何疑问或建议,请随时在评论区留言。

相关推荐

  1. Vue 3组合API深度剖析核心API使用指南

    2024-04-26 18:30:02       34 阅读
  2. Vue 3 组合API深度剖析:工具函数详解

    2024-04-26 18:30:02       40 阅读
  3. vue3组合API和选项API里分别如何使用store

    2024-04-26 18:30:02       37 阅读
  4. vue3组合api(一)

    2024-04-26 18:30:02       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-26 18:30:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-26 18:30:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-26 18:30:02       87 阅读
  4. Python语言-面向对象

    2024-04-26 18:30:02       96 阅读

热门阅读

  1. UE5主视口导航快捷键汇总

    2024-04-26 18:30:02       37 阅读
  2. vue2中的文件命名规范

    2024-04-26 18:30:02       30 阅读
  3. Spring(25) 为什么使用 SpringCloud,而不是用 Dubbo?

    2024-04-26 18:30:02       29 阅读
  4. 【后端】python数组去重和过滤的使用方法

    2024-04-26 18:30:02       35 阅读
  5. ubuntu16编译mpv播放器记录

    2024-04-26 18:30:02       22 阅读
  6. 【Spring Data JPA】实体对象生命周期相关注解

    2024-04-26 18:30:02       34 阅读
  7. Node框架Express搭建服务器和API

    2024-04-26 18:30:02       31 阅读
  8. ffmpeg一些常用的命令

    2024-04-26 18:30:02       30 阅读
  9. react-创建组件的两种方式

    2024-04-26 18:30:02       39 阅读