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.js函数式组件的全面了解

    Vue.js函数式组件的全面了解 一、什么是函数式组件 函数式组件是指仅接收 props,并且没有像组件实例这样的状态(也就是 data 选项)的组件。这意味着函数式组件无法像普通组件那样维护自身的状态,但是,由于它们没有状态,所以它们渲染起来开销较小,执行效率更高。函数式组件是 Vue 2.3 新增的特性。 二、如何定义函数式组件 定义函数式组件很简单,直…

    Vue 2023年5月27日
    00
  • Vue动态加载图片在跨域时无法显示的问题及解决方法

    Vue动态加载图片在跨域时无法显示的问题是由于浏览器的同源策略导致的。下面我将提供两种解决方法: 方法一:使用代理 安装http-proxy-middleware中间件 npm install http-proxy-middleware –save-dev 在vue.config.js中配置代理 const proxyUrl = "http://…

    Vue 2023年5月28日
    00
  • vue再次进入页面不会再次调用接口请求问题

    Vue再次进入页面不会再次调用接口请求问题,主要是因为Vue实现了单页应用(SPA)的机制,它使用了Vue-router来处理路由,当我们切换路由时,Vue-router只会切换组件,而不会重新请求数据。下面是详细的解释和攻略过程。 1. Vue-router实现SPA Vue使用Vue-router来实现路由,Vue-router是Vue.js官方的路由管…

    Vue 2023年5月28日
    00
  • undefined是否会变为null原理解析

    undefined与null都是JavaScript中的特殊值,但它们的含义有所不同。undefined表示一个未定义的变量,而null表示一个空对象指针。这两个值是不同的,但有时它们会被混淆,在JavaScript中,undefined是否会变为null是一个常见的疑问。接下来,我们将进行详细解释。 undefined和null的定义 先来看一下undef…

    Vue 2023年5月27日
    00
  • Vue中$on和$emit的实现原理分析

    Vue中$on和$emit的实现原理分析 介绍 在Vue中,$on和$emit是两个非常常用的方法,用于实现事件的监听和触发。$on方法用于监听事件,$emit方法用于触发事件。本文将对Vue中$on和$emit的实现原理进行分析和讲解。 $on的实现原理 $on方法用于监听事件,其实现原理很简单,就是将事件名和事件处理函数保存到一个对象中。在触发事件时,遍…

    Vue 2023年5月28日
    00
  • 解决vue中post方式提交数据后台无法接收的问题

    当在 Vue 中使用 post 方式提交数据到后台时,有时候会出现后台无法接收到数据的情况。这可能是由于请求头未设置导致的。在这种情况下,您可以尝试以下两种解决方法: 解决方法一:设置请求头 在使用 post 方法向后台服务器请求数据时,在请求头部分添加 Content-Type 和 X-Requested-With 两个参数。这样后台服务器就能正确地接收到…

    Vue 2023年5月28日
    00
  • vue实现前端保持筛选条件到url并进行同步参数设计

    Vue实现前端保持筛选条件到URL并进行同步参数设计的攻略主要分为以下几个步骤: 第一步:获取参数并解析 我们可以使用vue-router的query属性获取URL参数,然后解析成对象,方便我们进行筛选条件的操作。例如: // 获取URL参数 const query = this.$route.query // 解析参数成Object const filte…

    Vue 2023年5月27日
    00
  • vue vant中picker组件的使用

    针对“vue vant中picker组件的使用”的完整攻略,我将分为以下几个部分进行讲解: picker组件的基本使用 picker组件的高级使用 两条示例说明 1. picker组件的基本使用 在vue vant中使用picker组件首先需要通过npm安装vant组件库: npm install vant -S 然后在需要使用picker组件的页面中导入v…

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