Vue3的新特性及相关的Composition API使用
首先 创建项目 Vue3
Vue3 相较于Vue2 的6大亮点:

1 性能快。 2 按需编译 体积更小 3 提供了组合API 类似于react 的React Hooks 4 更好的Ts支持 5 暴露了自定义渲染的API 6 更先进的组件。
使用Vue3 创建项目 1 webpack 2 Vue-cli 3 vite
什么是vite?

安装vite :
npm install -g create-vite-app
创建Vue3项目:
create-vite-app projectName
安装依赖运行项目:
cd projectName
npm install
npm run dev
组合API:
setup(){
}
函数是组合API的入口函数,通过导入ref实时监听变量的变化。并且通过组合API可以初始化变量的值。 最后通过return 暴露出去对象或者方法。
eg:
首先导入ref:

其次,定义setup()函数:

ref函数的注意点:ref函数只能监听简单类型的变化,不能监听复杂类型的变化 类似于(对象/数组等)
监听复杂类型的变化可以使用reactive函数来实现。
eg:

最后实现的整体的业务逻辑封装之后如下所示:

模块化管理 封装相关的功能函数并导出 之后再App.vue中导入使用:

组合API的本质及其使用:在使用过程中将Compisition API 数据和方法 注入到options API 的数据和方法当中。

setup函数执行时机以及注意点:
setup函数的执行时间,是在beforeCreate钩子执行之前完成的。因此在setup函数中是无法使用data 和methods 的。并且为了避免错误的使用,直接将setup函数中的this修改成了undefined。
setup函数只能是同步的,不能够是异步的。
reactive函数:是Vue3中提供的实现响应式数据的方法。

reactive函数必须传入一个对象(json 或者 array类型的都可以),本质是将传入的数据包装成一个Proxy对象。

如果传递了其他的对象,默认情况下修改对象,界面不会自动更新,如果需要跟新,则需要重新赋值。
ref的深刻理解:


ref 和reactive的区别:

Vue如何判断一个数据是否是ref类型的或者是reactive类型的:

由私有属性无法访问,因此如果要判断一个类型是否是ref类型的或者是reactive类型的 可以通过导入函数isRef isReactive来实现:

递归监听:

由于把每一层包装成一个Proxy对象,因此十分的消耗性能。
非递归监听:只能够监听第一层,不能够监听其他层。创建非递归的监听的数据 (reactive 对应 shallowReactive) , (ref 对应于 shallowRef )
shallowRef使用的注意点:

可以通过triggerRef()方法实现ref 数据的主动的更新页面数据。
shallowRef的本质:


toRaw方法:针对于reactive响应式数据的原始数据。
eg:


toRaw的主要使用特点:保存原始数据,只更新原始数据,并不修改UI界面。

获取ref类型的原始数据的方式:通过toRaw 方法 由于包装成了reactive方法 所以需要使用.value来获取原始的数据。

通过markRaw来实现永远都不会追踪原始数据:

toRef方法:

ref()方法对某一个对象中的属性进行操作:如果将对象中的某一个属性变为响应式数据,修改响应式的数据时不会影响到原始数据的变化。

ref() 和 toRef() 方法的区别和联系:
如果需要将某一个对象中的多个属性变为响应式数据,可以采用toRefs()函数来实现。 只有一个属性变为响应式数据的时候使用toRef()
import {toRefs } from 'vue';
setup(){
let obj = {name:"kkl",age:18};
let state = toRefs(obj);
// 使用toRef()实现属性变为响应式。
// let name = toRef(obj,"name");
// let age = toRef(obj,'age');
function myFun(){
state.name.value = "zs";
state.age.value = 22;
}
return { state,myFun}
}
可以将对象中的属性全部变为响应式数据。
Vue3的新特性及相关的Composition API使用的更多相关文章
- Vue3.0新特性
Vue3.0新特性 Vue3.0的设计目标可以概括为体积更小.速度更快.加强TypeScript支持.加强API设计一致性.提高自身可维护性.开放更多底层功能. 描述 从Vue2到Vue3在一些比较重 ...
- vue3.0新特性以及进阶路线
Vue3.0新特性/改动 新手学习路线 ===> 起步 1. 扎实的 JavaScript / HTML / CSS 基本功.这是前置条件. 2. 通读官方教程 (guide) 的基础篇.不要 ...
- 返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, .net 4.5 带来的更方便的异步操作
原文:返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, ...
- Java8新特性时间日期库DateTime API及示例
Java8新特性的功能已经更新了不少篇幅了,今天重点讲解时间日期库中DateTime相关处理.同样的,如果你现在依旧在项目中使用传统Date.Calendar和SimpleDateFormat等API ...
- 尝鲜 vue3.x 新特性 - CompositionAPI
0. 基础要求 了解常见的 ES6 新特性 ES6 的导入导出语法 解构赋值 箭头函数 etc... 了解 vue 2.x 的基本使用 组件 常用的指令 生命周期函数 computed.watch.r ...
- 简单梳理下 Vue3 的新特性
在 Vue3 测试版刚刚发布的时候,我就学习了下 Composition API,但没想到正式版时隔一年多才出来,看了一下发现还是增加了不少新特性的,在这里我就将它们一一梳理一遍. 本文章只详细阐述 ...
- Vue3的新特性
总概 1) 性能提升 打包大小减少 41% 初次渲染快 55%,更新渲染快 133% 内存减少 54% 使用 Proxy 代替 defineProperty 实现数据响应式 重写虚拟 DOM 的实现和 ...
- C#语言的新特性及相关信息
.ENT版本 NET 2.0 :CLR, WinForms ,Wed Services,ASP.NET NET 3.0 :WCF,WF,WPF,CardSpace NET 3.5 :LINQ ,AJ ...
- Java8新特性第3章(Stream API)
Stream作为Java8的新特性之一,他与Java IO包中的InputStream和OutputStream完全不是一个概念.Java8中的Stream是对集合功能的一种增强,主要用于对集合对象进 ...
随机推荐
- 使用各类BeanUtils的时候,切记注意这个坑!
在日常开发中,我们经常需要给对象进行赋值,通常会调用其set/get方法,有些时候,如果我们要转换的两个对象之间属性大致相同,会考虑使用属性拷贝工具进行. 如我们经常在代码中会对一个数据结构封装成DO ...
- JVM学习笔记-第六章-类文件结构
JVM学习笔记-第六章-类文件结构 6.3 Class类文件的结构 本章中,笔者只是通俗地将任意一个有效的类或接口锁应当满足的格式称为"Class文件格式",实际上它完全不需要以磁 ...
- 英语学习Tips
[edp] 写英语论文那些容易忽略的点: 连字符大小写问题 连字符"-"后首字母的大小写_周树森_新浪博客 (sina.com.cn) reference list 里面的书名要斜 ...
- Servlet基本知识
Servlet基本知识 1.IDEA创建第一个Servlet程序xing 这里说明如何使用 IDEA Ultimate 2020.1.3版本来新建第一个web程序.参考 MoonChasing 1.1 ...
- Pikachu-Over Permission模块
一.概述 如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作. 越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的. 一般越权漏洞容易出现在权限页 ...
- SQL 练习5
查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩 SELECT Student.SId,Sname,t.[平均成绩] from Student , (SELECT sid , AVG ...
- noip29
T1 以下的LIS代指最长不降子序列. 考场看到取模,便想到了之前写过的Medain,取模操作让序列分布均匀,对应到本题上,既然是求LIS,那它应该是有循环节的,后来打表证实确实是有. 然后,我码了个 ...
- WPF 实现完全可控制的漂亮自定义窗口
在WPF界面开发中,有时候不想用系统的死板的窗口,想要来点新花样,常会自定义窗口. 那么,先抛出问题,想搞出下面这样的窗口,该咋整 ? aa 下面看一个啥也没设置过的普通窗口,这样的窗口,我们只能控 ...
- Oracle基本用法(一)
一.简介 数据库:Oracle数据库的概念和其他数据库不一样,这里的数据库是一个操作系统只有一个库,可以看做Oracle就是一个大的数据库. 实例:一个Oracle实例有一系列的后台进程和内存结构组成 ...
- rabbitMQ重复消费(结合死循环重发那一篇看)
/** * 重复消费逻辑判断与处理 */ @Component public class RepeatMqConsumer { /** * 服务对象 */ private int count=1; @ ...


