Vue3 Composition API的使用简介

Vue3 Composition API的使用简介攻略

什么是Composition API

Composition API是Vue3的新增特性之一,它是一种基于函数的API,可以使得Vue的逻辑组成更加清晰、模块化,并且像React中的Hooks一样,可以在函数组件中处理更加复杂的逻辑。这是相对于Options API而言的,Options API则是基于对象的API。

如何使用Composition API

首先,我们需要在Vue3项目中安装Vue3。安装方式如下:

npm install vue@next

创建组件

我们在创建组件之前,需要先引入Vue的库

import { defineComponent } from 'vue';

接下来就可以创建一个使用Composition API的组件了:

export default defineComponent({
  setup() {
     //代码写在这里
  }
})

setup函数是Composition API主要使用的函数。在这个函数中,我们可以定义状态、计算属性、方法等。

定义状态

在setup函数中,我们通常会定义状态。可以使用ref函数定义单个状态,或reactive函数定义一个状态对象。

import {ref, reactive} from 'vue';

export default defineComponent({
  setup() {
     const count = ref(0); //定义一个状态
     const state = reactive({name: 'Tom', age: 18}); //定义一个状态对象
  }
})

使用状态

与Options API不同,我们无法通过this来引用状态,需要使用以下的方式引用:

const count = ref(0);
console.log(count.value); //0
count.value = 1;
console.log(count.value); //1

const state = reactive({name: 'Tom', age: 18});
console.log(state.name); //'Tom'
state.age = 20;

定义计算属性

在setup函数中,我们还可以定义计算属性。可以使用computed函数,也可以使用自定义函数实现计算属性。

import {ref, computed} from 'vue';

export default defineComponent({
  setup() {
     const count = ref(0); 
     const doubleCount = computed(() => count.value * 2); //computed函数
     function sum() { //自定义函数
        return count.value + doubleCount.value;
     }
  }
})

定义方法

在setup函数中,我们也可以定义方法。除了普通方法之外,还可以定义生命周期方法、watch方法等。

import {ref, onMounted, watch} from 'vue';

export default defineComponent({
  setup() {
     const count = ref(0); 
     function increment() {
        count.value += 1;
     }
     onMounted(() => {
        console.log('mounted'); //生命周期方法
     });
     watch(count, (newVal, oldVal) => {
        console.log(`updated from ${oldVal} to ${newVal}`); //watch方法
     });

     return {count, increment};
  }
})

示例1:使用Composition API实现一个计数器

计数器组件中,我们需要定义一个数字状态,并且有增加、减少、重置功能。

<template>
  <div>
    <div>{{ count }}</div>
    <button @click="increment">+</button>
    <button @click="decrement">-</button>
    <button @click="reset">reset</button>
  </div>
</template>

<script>
import { defineComponent, ref } from 'vue';

export default defineComponent({
  setup() {
    const count = ref(0);

    const increment = () => {
      count.value += 1;
    };

    const decrement = () => {
      count.value -= 1;
    };

    const reset = () => {
      count.value = 0;
    };

    return { count, increment, decrement, reset };
  },
});
</script>

示例2:使用Composition API实现一个可搜索的列表

列表组件中,我们需要定义一个状态表示当前列表中的数据,以及一个状态表示搜索框中的值,还要定义一个方法用于过滤列表。

<template>
  <div>
    <input type="text" v-model="filterText" />
    <ul>
      <li v-for="item in filteredItems" :key="item.id">
        {{ item.text }}
      </li>
    </ul>
  </div>
</template>

<script>
import { defineComponent, reactive, toRefs } from 'vue';

export default defineComponent({
  props: {
    items: {
      type: Array,
      required: true,
    },
  },
  setup(props) {
    const state = reactive({
      filterText: '',
    });

    const filteredItems = computed(() => {
      return props.items.filter((item) =>
        item.text.toLowerCase().includes(state.filterText.toLowerCase())
      );
    });

    return {
      ...toRefs(state),
      filteredItems,
    };
  },
});
</script>

以上是“Vue3 Composition API的使用简介”攻略的详细讲解。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue3 Composition API的使用简介 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 实例讲解vue源码架构

    实例讲解Vue源码架构 本文将全面讲解Vue源码架构,包括Vue的整体架构、编译器、响应式系统和虚拟DOM。我们将会借助示例代码来详细讲解。本文假设你已经掌握了Vue的基础使用方法和概念。 Vue的整体架构 Vue的整体架构分为五个模块: 编译器:将模板转化为渲染函数,也包括AST树的生成和优化。 响应式系统:为data数据属性提供get/set方法,并且有…

    Vue 2023年5月28日
    00
  • Vue3中操作dom的四种方式总结(建议收藏!)

    关于Vue3中操作dom的四种方式总结,建议收藏!这个主题,我们可以分成四个部分来介绍。 直接操作DOM(不推荐) 我们先来看第一种方式,直接操作DOM。在Vue3中,这种方式已经不再被推荐使用。由于直接操作DOM可能会造成状态和视图的不一致,可能还会影响性能。不过我们还是需要知道如何使用这种方式,以便我们可以避免它。 在Vue3中,我们可以使用 ref 来…

    Vue 2023年5月28日
    00
  • vue3常用的API使用简介

    下面是关于“Vue3常用的API使用简介”的完整攻略。 什么是Vue3 Vue3是Vue.js框架的最新版本,它在性能、可维护性和开发体验上都有所提升。 Vue3具有模块化架构,可以在更小的体积下组装更丰富的功能,同时还增强了TypeScript的支持。 Vue3常用的API setup 函数 Vue3中,组件的逻辑可以写在 setup 函数中,它的返回值将…

    Vue 2023年5月28日
    00
  • vue中如何实现变量和字符串拼接

    在Vue中实现变量和字符串拼接,最常用的方式就是使用插值表达式和模板字符串。 插值表达式 使用双大括号{{}}将变量与字符串拼接起来,如下示例: <template> <div> <p>{{ message }} World!</p> </div> </template> <scr…

    Vue 2023年5月27日
    00
  • Vue项目代码之路由拆分、Vuex模块拆分、element按需加载详解

    我来为你详细讲解“Vue项目代码之路由拆分、Vuex模块拆分、element按需加载详解”的完整攻略。 路由拆分 当我们的项目变得越来越复杂时,路由也会变得越来越庞大。为了更好地维护我们的代码,我们可以考虑将路由进行拆分。 首先,我们可以在项目根目录下新建一个router文件夹,用来存放路由相关的文件。接着,我们可以在这个文件夹下新建一个index.js文件…

    Vue 2023年5月27日
    00
  • 动态Axios的配置步骤详解

    动态Axios是一个常用的网络请求库,其通过封装浏览器内置对象XMLHttpRequest实现的。在使用Axios时,我们需要对其进行配置,以满足特定的请求需求,本文将对Axios的配置进行详细讲解。 配置步骤 安装Axios 在使用Axios之前,需要先安装该库,可以通过以下命令进行安装: npm install axios 导入Axios 在进行Axio…

    Vue 2023年5月27日
    00
  • vue页面使用多个定时器的方法

    下面是关于Vue页面使用多个定时器的方法的详细攻略: 一、前置知识 在使用Vue页面多个定时器之前,需要掌握以下知识: Vue.js的生命周期钩子函数:created、mounted、updated、destroyed setInterval和clearInterval的用法 二、方法一:使用Vue.js的watch属性 如果在Vue组件中同时使用多个定时器…

    Vue 2023年5月29日
    00
  • 详解Vue与VueComponent的关系

    详解 Vue 与 Vue Component 的关系 Vue 是一款流行的前端框架,使用 Vue 可以方便地实现动态数据绑定、组件化以及声明式渲染等功能。而 Vue Component 则是 Vue 框架中组件的概念。本文将详细讲解 Vue 和 Vue Component 的关系,并通过两条示例说明。 Vue 和 Vue Component 的关系 Vue …

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部