Vue3 Composition API的使用简介

yizhihongxing

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中el、template、replace元素

    当我们使用Vue构建单页面应用,就会使用到Vue中的三个元素:el、template和replace。这三个元素常常因为其作用而被混淆,下面我将详细讲解它们的具体作用,同时会给出相应的代码示例。 el元素 el元素是Vue实例挂载的一个元素,也相当于Vue实例所控制的一个DOM元素。el元素可以是一个CSS选择器,也可以是一个实际的DOM元素。通过el元素,…

    Vue 2023年5月28日
    00
  • 在Vant的基础上封装下拉日期控件的代码示例

    下面我就为你详细讲解一下“在Vant的基础上封装下拉日期控件的代码示例”的完整攻略。 1. 准备工作 在封装下拉日期控件之前,需要先准备好项目的开发环境以及需要使用的工具和框架。下面是具体步骤: 使用vue-cli创建一个vue项目,可以在终端中执行如下命令: vue create my-project 安装Vant UI框架,可以在终端中执行如下命令: n…

    Vue 2023年5月29日
    00
  • Vue零基础入门之模板语法与数据绑定及Object.defineProperty方法详解

    下面是“Vue零基础入门之模板语法与数据绑定及Object.defineProperty方法详解”的完整攻略。 一、模板语法及数据绑定 1.1 插值 Vue框架可以在HTML标签中使用插值语法,通过{{expression}}在模板中绑定数据。Expression通常是JavaScript表达式或变量,可以计算出一个值,并在绑定时进行渲染。例如: <d…

    Vue 2023年5月27日
    00
  • Element-UI中回显失败问题的完美解决

    当我们在使用 Element-UI 中的级联选择器(Cascader)组件时,有时会遇到回显失败的问题,导致选择的值无法正确显示在界面上。这个问题的解决方式有多种,下面我们来详细介绍一种完美解决方案。 问题现象 在使用 Element-UI 的级联选择器组件时,有时候我们需要在修改页面中回显已经选择过的值。这时候,我们可以使用v-model绑定父子组件的选中…

    Vue 2023年5月28日
    00
  • 使用vue编写h5公众号跳转小程序的实现代码

    要使用Vue编写H5公众号跳转小程序的实现代码,需要遵循以下步骤: 1. 获取小程序的AppID 获取小程序的AppID,这个AppID将在后面的代码中使用到。可以在小程序的开发设置中找到。 2. 使用微信JS-SDK 在H5公众号页面中引入微信JS-SDK,使用微信JS-SDK提供的API跳转小程序。需要在微信开放平台申请JS-SDK权限并获取AppID和…

    Vue 2023年5月27日
    00
  • 如何解决.vue文件url引用文件的问题

    当我们在Vue项目中使用Vue组件时,可能会遇到引用.vue文件中的资源文件的问题,如图片、css和js等文件,常见的错误会在浏览器控制台输出404错误,即找不到该文件。 要解决这个问题,可以按照以下步骤操作: 1. 使用相对路径引用 在.vue文件中引用图片、css和js文件时,应使用相对路径来引用,以确保引用成功。如果不使用相对路径,则可能找不到资源文件…

    Vue 2023年5月28日
    00
  • Vue-cli框架实现计时器应用

    Vue-cli是一款能够快速搭建Vue项目的脚手架工具。在这篇攻略中,我们将详细讲解如何通过Vue-cli框架实现一个计时器应用。 1. 创建Vue项目 首先,我们需要通过Vue-cli创建一个新的Vue项目。打开命令行工具,执行以下命令: vue create timer-app 其中timer-app为项目名称。执行上述命令后,Vue-cli会自动下载所…

    Vue 2023年5月29日
    00
  • Vue项目环境搭建详细总结

    Vue项目环境搭建详细总结 在开始Vue.js开发时,需要先搭建好开发环境,本文将介绍如何快速搭建一个Vue.js的开发环境。 准备工作 首先需要安装 Node.js,Node.js是一个基于Chrome V8引擎的JavaScript运行环境。安装完Node.js后,检查Node.js及npm是否安装成功: node -v npm -v 如果正确地输出版本…

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