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

改进:

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

    昨天冯老板发了一篇文章探讨了为什么将数据库放入 K8S 中不是一个明智的选择. 如果是四年前有人质疑容器化数据库我觉得还可以 battle 一下,都 2023 年了还有人不能认清这个大势,我就有必要来 ...

  2. [c/c++][考研复习笔记]内部排序篇学习笔记

    考研排序复习笔记 插入排序 #include<stdio.h> #include<stdlib.h> #define MaxSize 9 //折半插入排序 void ZBIns ...

  3. NetSuite 开发日记 —— 库存详细信息记录更改数量问题

    详细报错: "type":"error.SuiteScriptError","name":"USER_ERROR",&q ...

  4. 【Python】【OpenCV】轮廓检测

    Code: 1 import cv2 2 import numpy as np 3 4 img = np.zeros((200, 200), dtype=np.uint8) 5 img[50:150, ...

  5. ElasticSearch之虚拟内存

    查看当前Linux系统中vm.max_map_count变量的值,命令如下: sysctl vm.max_map_count 执行结果的样例,如下: vm.max_map_count = 65530 ...

  6. 从零玩转Activiti7工作流-2021-09-12-16-22-07

    title: 从零玩转Activiti7工作流 date: 2021-09-12 16:22:08.51 updated: 2021-12-26 17:43:12.171 url: https://w ...

  7. 《An End-to-end Model for Entity-level Relation Extraction using Multi-instance Learning》阅读笔记

    代码   原文地址   预备知识: 1.什么是MIL? 多示例学习(MIL)是一种机器学习的方法,它的特点是每个训练数据不是一个单独的实例,而是一个包含多个实例的集合(称为包).每个包有一个标签,但是 ...

  8. 现代 CSS 解决方案:文字颜色自动适配背景色!

    在 23 年的 CSS 新特性中,有一个非常重要的功能更新 -- 相对颜色. 简单而言,相对颜色的功能,让我们在 CSS 中,对颜色有了更为强大的掌控能力. 其核心功能就是,让我们能够基于一个现有颜色 ...

  9. Spring Boot结合Element UI前后端分离的aixos的简单操作

    1:axios是什么? 基于promise用于浏览器和node.js的http客户端 axios官网:http://www.axios-js.com/  2:准备工作: 安装axios:npm ins ...

  10. 9 个让你的 Python 代码更快的小技巧

    哈喽大家好,我是咸鱼 我们经常听到 "Python 太慢了","Python 性能不行"这样的观点.但是,只要掌握一些编程技巧,就能大幅提升 Python 的运 ...