vue3常用 Composition API
1.拉开序幕的setup
理解:Vue3.0中一个新的配置项,值为一个函数。
setup是所有Composition API(组合API)“ 表演的舞台 ”。
组件中所用到的:数据、方法等等,均要配置在setup中。
setup函数的两种返回值:
若返回一个对象,则对象中的属性、方法, 在模板中均可以直接使用。(重点关注!)
若返回一个渲染函数:则可以自定义渲染内容。(了解)
注意点:
尽量不要与Vue2.x配置混用
Vue2.x配置(data、methos、computed...)中可以访问到setup中的属性、方法。
但在setup中不能访问到Vue2.x配置(data、methos、computed...)。
如果有重名, setup优先。
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()
的get
与set
完成的。对象类型的数据:内部 “ 求助 ” 了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的更多相关文章
- 好久没发文了,一篇Vue3的Composition API使用奉上
Composition API Composition API是Vue3中推荐的组件代码书写方式,相较于传统的Options API来说,它能让业务逻辑处理和后期代码维护变的更加简单. 首先我们来看O ...
- 学习 vue3 第一天 vue3简介,创建vue3项目 Composition Api 初识
前言: 从今天开始来和大家一起学习 vue3 相信大家都不陌生,已经火了一段时间了,但是还是有不少人没有学习,那就跟着六扇老师来简单的入个门 废话不多说,来开始今天的学习 Vue3 简介: 2020年 ...
- 基于 Vue3.0 Composition Api 快速构建实战项目
Quick Start 项目源码:https://github.com/Wscats/vue-cli 本项目综合运用了 Vue3.0 的新特性,适合新手学习
- vue3.0 composition API
一.Setup函数 1.创建时间:组件创建之前被调用,优先与created被调用,this指向的实例为window,created所指向的实例为proxy 2.this指向:不会指向组件实例 3.参数 ...
- mixin和composition api
1. 这两个都是实现组件逻辑复用的法宝 2. composition api是vue3的, composition api的出现就是解决mixins的不足之处的 一. mixin 回顾下mixin, ...
- composition api和react hooks的对比
一. 我的走位: 保持中立 1. 各有各的好处, 谁也别说谁 2. 一个东西带来的好处, 相应的副作用肯定也有, 人无完人 二 . vue3 的composition api 和 rea ...
- Vue3:不常用的Composition API && Fragment、Teleport、Suspense && 与Vue2对比的一些变化
1 # 一.Vue3不常用的Composition API 2 # 1.shallowReactive与shallowRef 3 .shallowReactive: 只处理对象最外层属性的响应式(浅响 ...
- Vue2 到 Vue3,重温这 5 个常用的 API
距离Vue3发布已经过去一年多时间了,从Vue2到Vue3是一个不小的升级,包括周边生态等.虽然目前大多数开发者们在使用的仍旧以Vue2为准,但Vue3显然是Vue开发者们未来必须面对的,而且前不久V ...
- vue3.0 的 Composition API 的一种使用方法
网上讨论的文章已经很多了,这里举一个简单的例子来讨论一下 Composition API 的用法,具体问题才好具体讨论嘛. 假如我们要做一个论坛的讨论列表和分页,以前是把需要的数据都放在data里面, ...
- Vue3全家桶升级指南一composition API
1.setup() vue3中的composition API中最重要的就是setup方法了,相当于组件的入口,所有的composition API都必须放到setup()中的使用. setup是在组 ...
随机推荐
- 没错,数据库确实应该放入 K8s 里!
昨天冯老板发了一篇文章探讨了为什么将数据库放入 K8S 中不是一个明智的选择. 如果是四年前有人质疑容器化数据库我觉得还可以 battle 一下,都 2023 年了还有人不能认清这个大势,我就有必要来 ...
- [c/c++][考研复习笔记]内部排序篇学习笔记
考研排序复习笔记 插入排序 #include<stdio.h> #include<stdlib.h> #define MaxSize 9 //折半插入排序 void ZBIns ...
- NetSuite 开发日记 —— 库存详细信息记录更改数量问题
详细报错: "type":"error.SuiteScriptError","name":"USER_ERROR",&q ...
- 【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, ...
- ElasticSearch之虚拟内存
查看当前Linux系统中vm.max_map_count变量的值,命令如下: sysctl vm.max_map_count 执行结果的样例,如下: vm.max_map_count = 65530 ...
- 从零玩转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 ...
- 《An End-to-end Model for Entity-level Relation Extraction using Multi-instance Learning》阅读笔记
代码 原文地址 预备知识: 1.什么是MIL? 多示例学习(MIL)是一种机器学习的方法,它的特点是每个训练数据不是一个单独的实例,而是一个包含多个实例的集合(称为包).每个包有一个标签,但是 ...
- 现代 CSS 解决方案:文字颜色自动适配背景色!
在 23 年的 CSS 新特性中,有一个非常重要的功能更新 -- 相对颜色. 简单而言,相对颜色的功能,让我们在 CSS 中,对颜色有了更为强大的掌控能力. 其核心功能就是,让我们能够基于一个现有颜色 ...
- Spring Boot结合Element UI前后端分离的aixos的简单操作
1:axios是什么? 基于promise用于浏览器和node.js的http客户端 axios官网:http://www.axios-js.com/ 2:准备工作: 安装axios:npm ins ...
- 9 个让你的 Python 代码更快的小技巧
哈喽大家好,我是咸鱼 我们经常听到 "Python 太慢了","Python 性能不行"这样的观点.但是,只要掌握一些编程技巧,就能大幅提升 Python 的运 ...