iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue3 Composition API的使用简介
  • 224
分享到

Vue3 Composition API的使用简介

2024-04-02 19:04:59 224人浏览 泡泡鱼
摘要

目录概述 示例为什么需要 setup ref、Reactive computed与watch生命周期 vue3.0在7月发布了rc版本,Vue-cli4.5后也支持选择vue3作为备

vue3.0在7月发布了rc版本,Vue-cli4.5后也支持选择vue3作为备选版本可以体验了,vue3的正式版本相必也不远了。学不动了呀!!!!
相比vue2.0版本(Option api),Composition API(组合API)算是3.0的重大变更之一了。

概述

Composition API 主要灵感来源于React Hooks,目的是通过一组低侵入式的、函数式的 API,使得我们能够更灵活地「组合」组件的逻辑。

示例


<template>
 <div>{{count}}</div>
 <button @click="addCount">添加</button>
</template>

<script lang="ts">
import { defineComponent, ref, onMounted } from 'vue';

export default defineComponent({
 name: 'App',
 setup () {
  const count = ref(0)
  const getCount = () => {
   count.value = Math.floor(Math.random() * 10)
  }
  const addCount = () => {
   count.value++
  }
  onMounted(() => {
   getCount()
  })

  return {
   count,
   addCount
  }
 }
});
</script>

Composition API顾名思义就是不再传入data、mounted等参数,通过引入的ref、onMounted等方法实现数据的双向绑定、生命周期函数的执行。

为什么需要

1.在组件比较复杂的情况下,可以将逻辑代码合到一起去,而不会被option强行分隔。这提高了代码质量的上限,同时也拉低了代码质量的下限。来自官方的一张对比图:

2.更好的进行复用。

在vue2中,想要复用部分逻辑的代码,都是通过mixin进去。但mixin进去的内容实际上很不直观,而且相同命名会被覆盖。而通过composition API,因为所有的方法都是引入的,可以将单独某个逻辑进行封装。例如对发送验证码倒计时功能进行封装。


<template>
 <input type="number" placeholder="请输入验证码">
 <button v-if="count">{{count}}秒后可重新发送</button>
 <button v-else @click="startCount">发送验证码</button>
</template>

<script lang="ts">
import { defineComponent, ref, reactive } from 'vue';

const userCountDown = () => {
 const count = ref(0)
 const countDown = (num: number) => {
  count.value = num
  num--
  if (num > 0) {
   setTimeout(() => {
    countDown(num)
   }, 1000)
  }
 }
 const startCount = () => {
  // get verifyCode
  countDown(60)
 }

 return { count, startCount }
}

export default defineComponent({
 name: 'Home',
 setup () {
  const { count, startCount } = userCountDown()
  return { count, startCount }
 }
});
</script>

3.更好的typescript支持。不会再往vue原型上添加很多内容,而是通过引入的方式,类型定义会更清晰。

setup

setup是vue新增的一个选项,它是组件内使用Composition API的入口。setup是在创建vue组件实例并完成props的初始化之后执行。因为setup会在option api解析之前被调用,所以setup中的this会与options中得完全不一样。为了避免混乱,在setup中不使用this。同时setup返回的值,可以在模板和其他option中使用。从设计上来说,vue官方是将所有的事情在setup里完成。setup返回值连接的是template模板与方法。

ref、reactive

既然不在传入data,那么将数据创建和监听响应式就需要通过vue暴露出来的功能 ref或reactive。两者有所区别,ref用于基础赋值类型的数据,而reactive用于引用类型的数据。

其中基础赋值类型的值,在setup方法中,需要用 .value的方式进行获取和修改。因为赋值类型的值如果return出去返回值,就失去了数据的双绑定。但是在template中,可以进行直接访问。


<template>
 <div>{{count}}
  <button @click="changeCount">添加</button>
 </div>
 <div>学生的姓名是:{{student.name}}</div>
 <div>学生的年龄是:{{student.age}}
  <button @click="changeStudentAge(20)">添加</button>
 </div>
</template>

<script lang="ts">
import { defineComponent, ref, reactive } from 'vue';

export default defineComponent({
 name: 'Home',
 setup () {
  const count = ref(0)
  const changeCount = () => {
   count.value = count.value + 1
  }
  const student = reactive({
   name: 'Bob',
   age: 12
  })
  const changeStudentAge = (age: number) => {
   student.age = age
  }
  return {
   count,
   changeCount,
   student,
   changeStudentAge
  }
 }
});
</script>

computed与watch


<template>
 <div>{{count}}</div>
 <div>{{doubleCount}}</div>
 <button @click="addCount">添加</button>
</template>

<script lang="ts">
import { defineComponent, ref, computed, watchEffect, watch } from 'vue';

export default defineComponent({
 name: 'App',
 setup () {
  const count = ref(0)
  watch(count, () => { // 如多个则用数组的方式传入[count, count1]
   console.log('watch', count.value)
  })
  watchEffect(() => {
   console.log('watchEffect', count.value)
  })
  const addCount = () => {
   count.value++
  }
  const doubleCount = computed(() => {
   return count.value * 2
  })
  return {
   count,
   doubleCount,
   addCount
  }
 }
});
</script>

watch与watchEffect的差别是,watchEffect会立马执行,执行中被读取的响应式 数据会被观测。而watch只有在watch对象有变化时才会执行。

生命周期

  • beforeCreate -> 使用 setup()
  • created -> 使用 setup()
  • beforeMount -> onBeforeMount
  • mounted -> onMounted
  • beforeUpdate -> onBeforeUpdate
  • updated -> onUpdated
  • beforeDestroy -> onBeforeUnmount
  • destroyed -> onUnmounted
  • errorCaptured -> onErrorCaptured

以上就是Vue3 Composition API的使用简介的详细内容,更多关于Vue3 Composition API的使用的资料请关注编程网其它相关文章!

--结束END--

本文标题: Vue3 Composition API的使用简介

本文链接: https://www.lsjlt.com/news/122330.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue3 Composition API的使用简介
    目录概述 示例为什么需要 setup ref、reactive computed与watch生命周期 vue3.0在7月发布了rc版本,vue-cli4.5后也支持选择vue3作为备...
    99+
    2024-04-02
  • Vue3中Composition API的使用示例
    这篇文章主要介绍Vue3中Composition API的使用示例,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!vue3.0在7月发布了rc版本,vue-cli4.5后也支持选择vue3作为备选版本可以体验了,vue...
    99+
    2023-06-14
  • vue3常用的API使用简介
    目录生命周期的变更reactiveref我们在vue2.x中获取元素标签是用 ref ,vue3.x我们要获取元素标签怎么办呢?toReftoRefsshallowReactives...
    99+
    2024-04-02
  • Vue3中Composition API怎么用
    这篇文章主要为大家展示了“Vue3中Composition API怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue3中Composition API怎么用”这篇文章吧。什么是Compo...
    99+
    2023-06-22
  • Vue3中其他的Composition API怎么使用
    本篇内容介绍了“Vue3中其他的Composition API怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.shall...
    99+
    2023-07-06
  • Vue3进阶主题Composition API如何使用
    这篇文章主要讲解了“Vue3进阶主题Composition API如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue3进阶主题Composition API如何...
    99+
    2023-07-06
  • 动画详解Vue3的Composition Api
    目录回顾Option ApiOption Api的缺陷Composition Api 众所周知,Vue3.0带来了一个全新的特性——Composition A...
    99+
    2024-04-02
  • Vue3中其他的Composition API详解
    目录1.shallowReactive 与 shallowRef2.readonly 与 shallowReadonly3.toRaw 与 markRaw4.customRef1.s...
    99+
    2023-03-24
    Vue3 Composition API
  • Vue3中其他的Composition API有哪些
    1.shallowReactive 与 shallowRefshallowReactive:只处理对象最外层属性的响应式(浅响应式)。shallowRef:只处理基本数据类型的响应式, 不进行对象的响应式处理。什么时候使用如果有一个对象数据...
    99+
    2023-05-15
    API Vue3 composition
  • Vue3 composition API实现逻辑复用的方法
    Composition API实现逻辑复用的步骤: 抽离逻辑代码到一个函数,这个函数命令约定为useXXX格式(这点同React Hooks) 在setup中引用函...
    99+
    2024-04-02
  • vue3中hooks的简介及用法教程
    目录一、 什么是hooks二、hooks的用法补充:vue3中Hooks用法一,什么是Hooks? 二,Mixin和Hooks区别大家好,今天这篇文章是介绍一下vue3中的...
    99+
    2023-01-31
    vue3 hooks vue3 hooks用法
  • vue3中常用的API如何使用
    这篇文章主要介绍了vue3中常用的API如何使用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。vue3.x已经发布了这么久,相关的生态也慢慢起来了,包括vite这个新的打包工...
    99+
    2023-06-14
  • Postman使用简介
    文章目录 Postman简介Postman主界面菜单栏工具栏请求管理区环境管理区请求设计区 发送请求发送GET请求Postman发送GET请求发送表单格式POST请求发送JSON格式PO...
    99+
    2023-09-02
    Java Postman
  • pipenv 使用简介
    之前在开发时一直使用 conda 使用作为虚拟环境管理工具,但有时候会经常会临时性的需要一个虚拟环境,如果使用 conda create 创建一个新环境,耗时不说,有时候还忘了删除,最后系统里一堆的虚拟环境。偶然发现 pipenv 后试用...
    99+
    2023-01-31
    简介 pipenv
  • Pytest 使用简介
    前言   最近在听极客时间的课程,里面的讲师极力推崇 pytest 框架,鄙视 unittest 框架,哈哈!然后查了些资料,发现了一条 python 鄙视链:pytest 鄙视 &...
    99+
    2024-04-02
  • SpringCloud Zuul的使用简介
    目录简介 使用 简介 Zuul是Spring Cloud全家桶中的微服务API网关。 所有从设备或网站来的请求都会经过Zuul到达后端的Netflix应用程序 Z...
    99+
    2024-04-02
  • SpringCloud Feign的使用简介
    目录简介使用总结简介 feign是声明式的web service客户端,它让微服务之间的调用变得更简单了,类似controller调用service。Spring Cloud集成了...
    99+
    2024-04-02
  • Guava Cache的使用简介
    目录1 引入 2 Guava Cache介绍 3 缓存的过期时间设置 4 缓存加载机制 5 缓存清理 1 引入 说到缓存,可能大家最先想到的还是Redis。作为基于键值对的非关系型...
    99+
    2024-04-02
  • Vue3通用API功能如何使用
    这篇文章主要介绍了Vue3通用API功能如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue3通用API功能如何使用文章都会有所收获,下面我们一起来看看吧。通用APIversion (暴漏当前使用的Vu...
    99+
    2023-07-06
  • Vue3通用API功能怎么使用
    通用APIversion (暴漏当前使用的Vue版本)import Vue from 'vue'; export default { setup(props, context) { console.l...
    99+
    2023-05-14
    API Vue3
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作