KingWong的博客

分享技术与生活,记录成长足迹

Vue3 Composition API:更灵活的组件逻辑复用方式

Vue3引入的Composition API是一种全新的组件逻辑组织方式。相比于Vue2的Options API,Composition API提供了更灵活、更强大的代码组织能力。本文将详细介绍Composition API的核心概念和使用方法。

为什么需要Composition API

在大型项目中,使用Options API(data、methods、computed等)可能会导致相关逻辑分散在不同的选项中。例如,一个功能相关的代码可能分布在data、methods、computed、watch中,维护起来比较困难。

Composition API允许我们根据功能而非选项类型来组织代码,让相关的逻辑更加集中。

核心函数:setup

setup是Composition API的入口点,在组件实例创建之前执行。setup函数接收props和context两个参数。

export default {
    setup(props, context) {
        const message = ref('Hello Vue3');
        const count = ref(0);

        function increment() {
            count.value++;
        }

        return {
            message,
            count,
            increment
        };
    }
}

响应式系统

Composition API提供了两个重要的响应式API:ref和reactive。

ref用于包装基本类型的响应式数据,访问时需要通过.value。reactive用于创建对象的响应式副本。

const count = ref(0);
const state = reactive({
    name: 'Vue3',
    version: '3.0'
});

逻辑复用:Composables

Composition API最大的优势之一是更容易实现逻辑复用。我们可以将某些逻辑抽取到独立的函数中,这些函数被称为"Composables"或"组合式函数"。

function useCounter(initialCount) {
    const count = ref(initialCount);
    const increment = () => count.value++;
    const decrement = () => count.value--;
    return { count, increment, decrement };
}

这样在任何组件中都可以使用这个逻辑,只需调用useCounter函数即可。

生命周期钩子

在Composition API中,生命周期钩子需要显式导入和调用。常用的钩子包括onMounted、onUpdated、onUnmounted等。

import { onMounted, onUnmounted } from 'vue';

onMounted(() => {
    console.log('组件已挂载');
});

onUnmounted(() => {
    console.log('组件已卸载');
});