1.拉开序幕的setup

  1. 理解:Vue3.0中一个新的配置项,值为一个函数。

  2. setup是所有Composition API(组合API)“ 表演的舞台 ”

  3. 组件中所用到的:数据、方法等等,均要配置在setup中。

  4. setup函数的两种返回值:

    1. 若返回一个对象,则对象中的属性、方法, 在模板中均可以直接使用。(重点关注!)

    2. 若返回一个渲染函数:则可以自定义渲染内容。(了解)

  5. 注意点:

    1. 尽量不要与Vue2.x配置混用

      • Vue2.x配置(data、methos、computed...)中可以访问到setup中的属性、方法。

      • 但在setup中不能访问到Vue2.x配置(data、methos、computed...)。

      • 如果有重名, setup优先。

    2. setup不能是一个async函数,因为返回值不再是return的对象, 而是promise, 模板看不到return对象中的属性。(后期也可以返回一个Promise实例,但需要Suspense和异步组件的配合)

 1 <template>
2 <h1>一个人的信息</h1>
3 <h1>姓名:{{name}}</h1>
4 <h1>年龄:{{age}}</h1>
5 <h1>工作种类:{{job.type}}</h1>
6 <h1>工作薪水:{{job.salary}}</h1>
7 <button @click="changeInfo">修改个人信息</button>
8 </template>
9
10 <script>
11 import {ref} from 'vue'
12 export default {
13 name: 'App',
14 setup(){
15 let name = ref("张三")
16 let age = ref(18)
17 let job = ref({
18 type: '前端工程师',
19 salary: '30k'
20 })
21
22 function changeInfo() {
23 name.value = '李四'
24 age.value = 48
25 job.value.type = 'UI设计师'
26 job.value.salary = '35k'
27 }
28 return {
29 name,
30 age,
31 job,
32 changeInfo
33 }
34 }
35 }
36 </script>

2.ref函数

  • 作用: 定义一个响应式的数据

  • 语法: const xxx = ref(initValue)

    • 创建一个包含响应式数据的引用对象(reference对象,简称ref对象)

    • JS中操作数据: xxx.value

    • 模板中读取数据: 不需要.value,直接:<div>{{xxx}}</div>

  • 备注:

    • 接收的数据可以是:基本类型、也可以是对象类型。

    • 基本类型的数据:响应式依然是靠Object.defineProperty()getset完成的。

    • 对象类型的数据:内部 “ 求助 ” 了Vue3.0中的一个新函数—— reactive函数。

3.reactive函数

  • 作用: 定义一个对象类型的响应式数据(基本类型不要用它,要用ref函数)

  • 语法:const 代理对象= reactive(源对象)接收一个对象(或数组),返回一个代理对象(Proxy的实例对象,简称proxy对象)

  • reactive定义的响应式数据是“深层次的”。

  • 内部基于 ES6 的 Proxy 实现,通过代理对象操作源对象内部数据进行操作。

 1 <template>
2 <h1>一个人的信息</h1>
3 <h1>姓名:{{name}}</h1>
4 <h1>年龄:{{age}}</h1>
5 <h1>工作种类:{{job.type}}</h1>
6 <h1>工作薪水:{{job.salary}}</h1>
7 <button @click="changeInfo">修改个人信息</button>
8 </template>
9
10 <script>
11 import {ref, reactive} from 'vue'
12 export default {
13 name: 'App',
14 setup(){
15 let name = ref("张三")
16 let age = ref(18)
17 let job = reactive({
18 type: '前端工程师',
19 salary: '30k'
20 })
21
22 function changeInfo() {
23 name.value = '李四'
24 age.value = 48
25 job.type = 'UI设计师'
26 job.salary = '35k'
27 }
28 return {
29 name,
30 age,
31 job,
32 changeInfo
33 }
34 }
35 }
36 </script>

改进:

 1 <template>
2 <h1>一个人的信息</h1>
3 <h1>姓名:{{person.name}}</h1>
4 <h1>年龄:{{person.age}}</h1>
5 <h1>工作种类:{{person.job.type}}</h1>
6 <h1>工作薪水:{{person.job.salary}}</h1>
7 <button @click="changeInfo">修改个人信息</button>
8 </template>
9
10 <script>
11 import { reactive } from 'vue'
12 export default {
13 name: 'App',
14 setup(){
15 let person = reactive({
16 name: '张三',
17 age: 18,
18 job: {
19 type: '前端工程师',
20 salary: '30k'
21 },
22 hobby: ['唱歌', '跳舞', '打麻将']
23 })
24
25
26 function changeInfo() {
27 person.name = '李四'
28 person.age = 48
29 person.job.type = 'UI设计师'
30 person.job.salary = '35k'
31 person.hobby[0] = '学习'
32 }
33 return {
34 person,
35 changeInfo
36 }
37 }
38 }
39 </script>

vue3常用 Composition API的更多相关文章

  1. 好久没发文了,一篇Vue3的Composition API使用奉上

    Composition API Composition API是Vue3中推荐的组件代码书写方式,相较于传统的Options API来说,它能让业务逻辑处理和后期代码维护变的更加简单. 首先我们来看O ...

  2. 学习 vue3 第一天 vue3简介,创建vue3项目 Composition Api 初识

    前言: 从今天开始来和大家一起学习 vue3 相信大家都不陌生,已经火了一段时间了,但是还是有不少人没有学习,那就跟着六扇老师来简单的入个门 废话不多说,来开始今天的学习 Vue3 简介: 2020年 ...

  3. 基于 Vue3.0 Composition Api 快速构建实战项目

    Quick Start 项目源码:https://github.com/Wscats/vue-cli 本项目综合运用了 Vue3.0 的新特性,适合新手学习

  4. vue3.0 composition API

    一.Setup函数 1.创建时间:组件创建之前被调用,优先与created被调用,this指向的实例为window,created所指向的实例为proxy 2.this指向:不会指向组件实例 3.参数 ...

  5. mixin和composition api

    1. 这两个都是实现组件逻辑复用的法宝 2. composition api是vue3的,  composition api的出现就是解决mixins的不足之处的 一. mixin 回顾下mixin, ...

  6. composition api和react hooks的对比

    一.  我的走位:   保持中立 1. 各有各的好处,  谁也别说谁 2. 一个东西带来的好处, 相应的副作用肯定也有, 人无完人 二 .  vue3 的composition api 和   rea ...

  7. Vue3:不常用的Composition API && Fragment、Teleport、Suspense && 与Vue2对比的一些变化

    1 # 一.Vue3不常用的Composition API 2 # 1.shallowReactive与shallowRef 3 .shallowReactive: 只处理对象最外层属性的响应式(浅响 ...

  8. Vue2 到 Vue3,重温这 5 个常用的 API

    距离Vue3发布已经过去一年多时间了,从Vue2到Vue3是一个不小的升级,包括周边生态等.虽然目前大多数开发者们在使用的仍旧以Vue2为准,但Vue3显然是Vue开发者们未来必须面对的,而且前不久V ...

  9. vue3.0 的 Composition API 的一种使用方法

    网上讨论的文章已经很多了,这里举一个简单的例子来讨论一下 Composition API 的用法,具体问题才好具体讨论嘛. 假如我们要做一个论坛的讨论列表和分页,以前是把需要的数据都放在data里面, ...

  10. Vue3全家桶升级指南一composition API

    1.setup() vue3中的composition API中最重要的就是setup方法了,相当于组件的入口,所有的composition API都必须放到setup()中的使用. setup是在组 ...

随机推荐

  1. 渐进式web全栈:blazor web app

    前言 本文要说的这种开发模式,这种模式并不是只有blazor支持,js中有一样的方案next.js nuxt.js:blazor还有很多其它内容,本文近关注渐进式开发模式. 是的,前后端是主流,不过以 ...

  2. 2023-12-09:用go语言,给你两个整数数组 arr1 和 arr2, 返回使 arr1 严格递增所需要的最小「操作」数(可能为 0)。 每一步「操作」中,你可以分别从 arr1 和 arr2

    2023-12-09:用go语言,给你两个整数数组 arr1 和 arr2, 返回使 arr1 严格递增所需要的最小「操作」数(可能为 0). 每一步「操作」中,你可以分别从 arr1 和 arr2 ...

  3. [ABC263F] Tournament

    Problem Statement $2^N$ people, numbered $1$ to $2^N$, will participate in a rock-paper-scissors tou ...

  4. Win10遇到服务器启动失败 80端口被占用如何解决

    Win10提示"服务器启动失败,80端口被占用"怎么办?具体解决方法如下 步骤如下: 1.以管理员身份运行cmd; 2.输入:net stop http 注:如果提示是否真的需要停 ...

  5. AutoGPT实战

    1.概述 人工智能(AI)的能力持续在全球范围内引起轰动,并对我们日常生活和职业生涯带来重大变革.随着像ChatGPT这样的先进生成型AI模型以及从GPT-3到GPT-4的加速,我们在高级推理.理解更 ...

  6. DES加密算法优缺点大揭秘:为何它逐渐被取代?

    一.引言 DES(Data Encryption Standard)加密算法作为一种历史悠久的对称加密算法,自1972年由美国国家标准局(NBS)发布以来,广泛应用于各种数据安全场景.本文将从算法原理 ...

  7. Python——第四章:生成器(Generators)

    生成器(generator):    生成器的本质就是迭代器 创建生成器的两种方案:        1. 生成器函数        2. 生成器表达式 生成器函数        生成器函数中有一个关键 ...

  8. Navicat Premium多用户破解方法 12以上版本

    https://www.cnblogs.com/cgqplus/p/15267306.html 本文不提供注册机或者破解工具,本论坛多的是,搜索一下就好了. 本方法适用于多用户环境下使用,比如在服务器 ...

  9. MySQL|主从延迟问题排查(一)

    一.案例分享 1.1 问题描述 大查询长时间执行无法释放DML读锁,后续同步主库的DDL操作获取DML写锁资源被阻塞等待,导致后续同步主库的操作堆积,主从延迟增长严重.从同步延迟的监控来看,延迟从17 ...

  10. 神经网络优化篇:详解梯度检验(Gradient checking)

    梯度检验 梯度检验帮节省了很多时间,也多次帮发现backprop实施过程中的bug,接下来,看看如何利用它来调试或检验backprop的实施是否正确. 假设的网络中含有下列参数,\(W^{[1]}\) ...