一篇文章讲明白vue3的script setup,拥抱组合式API!
引言
vue3除了Composition API是一个亮点之外,尤大大又给我们带来了一个全新的玩意 —— script setup,对于setup大家相信都不陌生,而对于script setup有些同学则表示难以理解,那么从现在开始,这一篇文章将让你一看就懂。
ref与reactive
在setup中,我们拥有ref和reactive俩个api去创建一个响应式变量,这俩者存在的区别是ref是针对基本类型的响应,而reactive是针对引用类型的响应。
import { ref, reactive } from 'vue'
const data = ref('123')
const other = reactive({ is: '123' })
console.log(data.value)
console.log(other.is)
// 这里需要注意,reactive的对象可以直接访问,修改内部的子数据,而data需要使用.value访问修改,如下
data.value = '666' // ok
data = '666' // no
other.is = '666' // ok
other = '666' // no
导入自定义组件
在之前的optionApi中我们使用的是components: { ... } 的方式导入自定义组件,而在现在,我们只需要直接import组件即可使用
<template>
<Button>OK!</Button>
</template> <script setup>
import Button from 'element-ui-plus'
</script>
自定义方法
在之前的optionApi中我们使用的是在methods中写自定义方法,而这里我们直接定义一个方法或者变量,在template中直接使用即可
<template>
<button @click="touchMe">OK!</button>
<button @click="touchIt">OK!</button>
</template> <script setup>
import { ref, reactive } from 'vue' const text = ref('123') const touchMe = () => {
text.value = '666'
} function touchIt() {
text.value = '666'
}
</script>
一般情况下笔者建议开发者都使用ref,因为ref适用范围更广。
全新的计算函数和watch
现在我们使用更为简单的方式实现计算函数与watch,直接引入组合式api直接干就完了!
import { ref, computed, watch } from 'vue'
const data = ref('666')
const imComputed = computed(() => {
return data.value + 'some thing'
})
const unwatch = watch(data, () => {
console.log('data was be changed')
})
简单直白的获取到ref组件
之前我们采用this.$ref.refName的方式去获取ref组件,在这里setup采用了更加简单便捷的方式去获取ref
<template>
<el-table ref="elTable"></el-table>
</template> <script setup>
import { ref } from 'vue' // refName = 变量名将自动捆绑进去
const elTable = ref(null)
console.log(elTable.value)
</script>
获取props
之前的optionApi,我们需要先在props中定义props,然后再从this.xxx去获取,这样很容易出现重名覆盖等情况,在这里vue3则采用了defineProps去定义props,直接返回了响应对象。
<script setup>
import { defineProps, toRefs, unref } from 'vue' const props = defineProps({
a: {
default: 0
}
}) // 这里的a就等于从props中ref一个响应变量,需要.value操作符
const { a } = toRefs(props) // 这里的a就等于从props中直接提取一个普通变量,随意更改无响应,直接访问无需.value
const { a } = unref(props) </script>
至此,相信开发者看完大致就了解了script setup啦,在vue3时期快点拥抱组合式api,拥抱script setup,让代码看起来更简洁点~
关于智密科技:专业开发各类Uniapp原生插件、目前交付给客户的插件已经超过100个各类插件,正在陆续整理上架并分享一切关于Uni-app的教程、资讯。
插件使用交流QQ群:755910061
一篇文章讲明白vue3的script setup,拥抱组合式API!的更多相关文章
- 一篇文章搞明白CORS跨域
面试问到数据交互的时候,经常会问跨域如何处理.大部分人都会回答JSONP,然后面试官紧接着就会问:"JSONP缺点是什么啊?"这个时候坑就来了,如果面试者说它支持GET方式,然后面 ...
- 一篇文章讲透Dijkstra最短路径算法
Dijkstra是典型最短路径算法,计算一个起始节点到路径中其他所有节点的最短路径的算法和思想.在一些专业课程中如数据结构,图论,运筹学等都有介绍.其思想是一种基础的求最短路径的算法,通过基础思想的变 ...
- 一篇文章搞明白Integer、new Integer() 和 int 的概念与区别
基本概念的区分 1.Integer 是 int 的包装类,int 则是 java 的一种基本数据类型 2.Integer 变量必须实例化后才能使用,而int变量不需要 3.Integer 实际是对象的 ...
- vue3 script setup 定稿
vue script setup 已经官宣定稿.本文主要翻译了来自 0040-script-setup 的内容. 摘要 在单文件组件(SFC)中引入一个新的 <script> 类型 set ...
- vue3 学习笔记(九)——script setup 语法糖用了才知道有多爽
刚开始使用 script setup 语法糖的时候,编辑器会提示这是一个实验属性,要使用的话,需要固定 vue 版本. 在 6 月底,该提案被正式定稿,在 v3.1.3 的版本上,继续使用但仍会有实验 ...
- Android:学习AIDL,这一篇文章就够了(下)
前言 上一篇博文介绍了关于AIDL是什么,为什么我们需要AIDL,AIDL的语法以及如何使用AIDL等方面的知识,这一篇博文将顺着上一篇的思路往下走,接着介绍关于AIDL的一些更加深入的知识.强烈建议 ...
- (转载)Android:学习AIDL,这一篇文章就够了(下)
前言 上一篇博文介绍了关于AIDL是什么,为什么我们需要AIDL,AIDL的语法以及如何使用AIDL等方面的知识,这一篇博文将顺着上一篇的思路往下走,接着介绍关于AIDL的一些更加深入的知识.强烈建议 ...
- 一篇文章弄懂 Java 反射的使用
说到Java反射,必须先把 Java 的字节码搞明白了,也就是 Class , 大 Class 在之前的文章中,我们知道了Java的大Class就是类的字节码,就是一个普通的类,里面保存的是类的信息, ...
- 一篇文章通俗易懂的让你彻底理解 Java 注解
很多Java程序员,对Java的注解一知半解,更有甚者,有的人可能连注解是什么都不知道 本文我们用最简单的 demo , 最通俗最短的语言,带你了解注解到底是什么? 先来简单回顾一下基础,我们知道,J ...
随机推荐
- YAPI接口自动鉴权功能部署详解
安装准备 以下操作,默认要求自己部署过yapi,最好是部署过yapi二次开发环境. 无论是选择在线安装或者是本地安装,都需要安装client工具. 1.yapi-cli:npm install yap ...
- Codeforces 547E - Mike and Friends(AC 自动机+树状数组)
题面传送门 好久每做过 AC 自动机的题了--做几个题回忆一下罢 AC 自动机能够解决多串匹配问题,注意是匹配,碰到前后缀的问题那多半不在 AC 自动机能解决的范围内. 在初学 AC 自动机的时候相信 ...
- Codeforces 446C - DZY Loves Fibonacci Numbers(斐波那契数列+线段树)
Codeforces 题目传送门 & 洛谷题目传送门 你可能会疑惑我为什么要写 *2400 的题的题解 首先一个很明显的想法是,看到斐波那契数列和 \(10^9+9\) 就想到通项公式,\(F ...
- Atcoder Grand Contest 006 D - Median Pyramid Hard(二分+思维)
Atcoder 题面传送门 & 洛谷题面传送门 u1s1 Atcoder 不少思维题是真的想不出来,尽管在 Atcoder 上难度并不高 二分答案(这我倒是想到了),检验最上面一层的数是否 \ ...
- PostgreSQL 数据库备份与还原
PostgreSQL 数据库备份与还原 目录 备份 还原 栗子 备份 PostgreSQL提供的一个工具pg_dump,逻辑导出数据,生成sql文件或其他格式文件,pg_dump是一个客户端工具,可以 ...
- AnnotationHub, clusterProfiler 进行GO,KEGG注释
️ AnnotationHub 目前最新的工具包叫做AnnotationHub,顾名思义,就是注释信息的中装站.通过它,能找到了几乎所有的注释资源.如果没有,你还可以根据已有的数据用它提供的函数进行构 ...
- R 多图间距调整
在R中多图画到一起的时候,各图间距通常默认的较远. 如下图: 1 par(mfcol=c(2,1)) 2 plot(1:100) 3 plot(1:100) 调整图片间距这时我们要用到par()函数中 ...
- 使用SpringBoot实现文件的上传
使用SpringBoot实现文件的上传 springboot可以直接使用 org.springframework.web.multipart.MultipartFile 所以非常容易实现 一.首先是简 ...
- 微信小程序的wx.login用async和data解决code不一致的问题
由于wx.login是异步函数,导致在我们获取微信小程序返回的code去请求我们的登录接口时code的值会异常.现在用promise封装一下,将他success的结果返回,在登陆函数中await就可以 ...
- 静态库动态库的编译、链接, binutils工具集, 代码段\数据段\bss段解释
#1. 如何使用静态库 制作静态库 (1)gcc *.c -c -I../include得到o文件 (2) ar rcs libMyTest.a *.o 将所有.o文件打包为静态库,r将文件插入静态库 ...