一篇文章讲明白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 ...
随机推荐
- Ubuntu 18.04.5 LTS Ceph集群之 cephx 认证及使用普通用户挂载RBD和CephFS
1.cephx认证和授权 1.1 CephX认证机制 Ceph使用cephx协议对客户端进行身份认证: 1.每个MON都可以对客户端进行身份验正并分发密钥, 不存在单点故障和性能瓶颈 2. MON会返 ...
- ServerBootstrap的handler()和childHandler()区别
无论服务端还是客户端都进行了handler的设置,通过添加hanlder,我们可以监听Channel的各种动作以及状态的改变,包括连接,绑定,接收消息等. 区别: 1. handler在初始化时就会执 ...
- 常见 js 数组方法使用详解
数组常用方法总结 concat filter map some every reduce sort includes join some every 语法:array.every(function(c ...
- BZOJ 3694&&DTOJ 1972: 最短路
题目描述 给出一个n个点m条边的无向图,n个点的编号从1~n,定义源点为1.定义最短路树如下:从源点1经过边集T到任意一点i有且仅有一条路径,且这条路径是整个图1到i的最短路径,边集T构成最短路树. ...
- perl练习——FASTA格式文件中序列GC含量计算&perl数组排序如何获得下标或者键
一.关于程序: FUN:计算FASTA文件中每条序列中G和C的含量百分比,输出最大值及其id INPUT:FASTA格式文件 >seq1 CGCCGAGCGCTTGACCTCCAGCAAGACG ...
- Python基础之基本运算符
目录 1. 算数运算符 2. 比较运算符 3. 赋值运算符 4. 逻辑运算符 5. 身份运算 6. 运算符优先级 1. 算数运算符 常用算术运算符使用方法如下: x = 5 y = 2 a = x + ...
- SQL-关联表查询(连表查询)
0.例如:select * from T1,T2 where T1.a=T2.a 1.连表查询 <=> join(inner join)内连接查询 数据源: Persion表: ...
- 学习java的第八天
一.今日收获 1.学习完全学习手册上2.3转义字符与2.4运算符两节 二.今日难题 1.没有什么难理解的问题 三.明日目标 1.哔哩哔哩教学视频 2.Java学习手册
- db9串口接头的定义
这个接头都是以公头为准,所有接头还是以公头去记. RS-232端(DB9公头/针型)引脚定义 2: RXD 3:TXD 5:GND 1/4/6:内部相链接 7/8 :内部相链接 1.RS-232端 ...
- d3动态坐标轴
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...