承接上文,继续记录vue3的新特性

上文:

vue3的学习(一)

Composition (由很多apl组成的vue3代码)

vue3与vue2在代码使用上有了很大的区别,更加趋向于原生js的格式,使用composition可以将界面中重复的部分连同其功能一起提取为可重用的代码段,从而提高应用的可维护性和灵活性

1、setup函数

setup函数是vue3与vue2的一个重要的不同,setup函数在组件被创建之前,props之后进行解析执行,解析完成后,props就作为了组合式apl的入口。

setup函数的调用发生在data、computed和methods等属性之前,这些属性无法在setup中被获取使用,因此setup函数的优先级比这些函数更高,在setup函数被解析暴露之前,其中的数据与外界相互独立

在代码开始执行后,setup函数会返回一个对象,这个对象中有着setup中的数据,我们将这个对象中的内容全部暴露给外界的vue核心属性(data,methods,watch……)以及组件模板来完成一整套代码执行的流程

语法:

export default {// setup函数里面可以放数据  方法  计算属性  侦听器setup(){//要执行的代码return {//数据需要return出去才能使用}}},}

在使用setup函数时,可以发现一个问题,就是数据无法实现实时响应式更新,因此我们需要一些方法来帮助我们解决这个问题,这时就要用到三个属性,ref,reactive,toRefs

2、ref属性

描述:返回一个较为复杂的对象,其中的value值为需要实现响应式的数据,此方法主要用于实现基础数据的响应式

语法:

setup() {// 字符串实现响应式://原方式:// let title2="vue3的形式" //无法实现响应式// 数字实现响应式// let  num=0let  num=ref(0)return {num//本质上它其实是//num:value值为num的对象,这个对象可以实现页面实时响应}},

3、reactive属性

描述:返回一个较为简单的对象,其中的value值为需要实现响应式的数据,此方法主要用于实现复杂数据的响应式

语法:

let data = reactive({num: 1,str: "abc",
})return {data
}

4、toRefs

描述:数值被解构后会因为被解构的值不是对象,而是原数值的原因无法被解析,因此使用此方法让被解构后的响应式数值仍然可以实现页面实时响应

语法:

setup() {     //toRefs 可以让解构过的值仍然是一个响应式的数据let {num,str} = toRefs(reactive({num: 1,str: "abc",}))return {num,str}}

本篇注意点:

1、其实ref也可以实现复杂数据的响应式处理,因为它与reactive都是返回一个对象,它们最大的区别在于后续的侦听器和toRefs的使用

2、toRefs其实就是把解构出来的值进行再次循环处理,由于只有复杂数据类型会用到解构,因此toRefs一般与且只能与reactive进行搭配一起使用,因为ref的返回值是一个较为复杂的对象,而reactive已经够用,因此vue官方并没有把增加ref和toRefs搭配语法的打算

vue3的学习(二)相关推荐

  1. C#多线程学习(二) 如何操纵一个线程

    C#多线程学习(二) 如何操纵一个线程 原文链接:http://kb.cnblogs.com/page/42529/ [1] C#多线程学习(二) 如何操纵一个线程 [2] C#多线程学习(二) 如何 ...

  2. spring security 学习二

    spring security 学习二 doc:https://docs.spring.io/spring-security/site/docs/ 基于表单的认证(个性化认证流程): 一.自定义登录页 ...

  3. STL源码剖析学习二:空间配置器(allocator)

    STL源码剖析学习二:空间配置器(allocator) 标准接口: vlaue_type pointer const_pointer reference const_reference size_ty ...

  4. mysql用创建的用户登陆并修改表格_MySQL 基础学习二:创建一个用户表,并增删改查...

    MySQL 基础学习二:创建一个用户表,并 增删改查 提示:MySQL 命令建议都用大写,因为小写运行时,还是翻译成大写的. 第一步,创建一个用户表 1,打开控制台,进入数据库 C:\Users\Ad ...

  5. OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack()

    OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack() 参考博客: Harris角点检测原理详解 Harri ...

  6. OpenCV学习(二十二) :反向投影:calcBackProject(),mixChannels()

    OpenCV学习(二十二) :反向投影:calcHist(),minMaxLoc(),compareHist() 参考博客: 反向投影backproject的直观理解 opencv 反向投影 颜色直方 ...

  7. OpenCV学习(二十一) :计算图像连通分量:connectedComponents(),connectedComponentsWithStats()

    OpenCV学习(二十一) :计算图像连通分量:connectedComponents(),connectedComponentsWithStats() 1.connectedComponents() ...

  8. OpenCV学习(二十) :分水岭算法:watershed()

    OpenCV学习(二十) :分水岭算法:watershed() 参考博客: OpenCV-分水岭算法 图像处理--分水岭算法 OpenCV学习(7) 分水岭算法(1) Opencv分水岭算法--wat ...

  9. OpenCV与图像处理学习二——图像直方图与色彩空间

    OpenCV与图像处理学习二--图像直方图与色彩空间 2.4 图像直方图(Image Histogram) 2.4.1 直方图的绘制 2.4.2 三通道直方图绘制 2.5 颜色空间 2.5.1 RGB ...

最新文章

  1. 音频处理中频域转时域的恢复
  2. shell中符号使用
  3. Python Module_pdb_DEBUG 方法
  4. mysql中uuid的写法_MySQL IS_UUID()用法及代码示例
  5. 【转】文本格式导入物料凭证模板
  6. html拼接日期,html日期加减
  7. 在RHEL5/CentOS5上配置使用Open×××
  8. Spring : Spring 事务控制 设置手动回滚 TransactionAspectSupport
  9. 【分布式系统工程实现】系统可扩展性演化
  10. mysql 前沿表设计_史上最简单MySQL教程详解(基础篇)之表的维护和改造
  11. Python爬虫从入门到放弃(十五)之 Scrapy框架中Spiders用法
  12. Java进阶:SpringMVC中自定义类型转换器
  13. Egret引擎做游戏登录账号和密码显示
  14. Python周刊491期
  15. 集体备课模板_幼儿园集体备课教案模板课件(19页)-原创力文档
  16. 游戏输入控制利器:DirectInput
  17. java excel 单元格类型,POI Excel 单元格内容类型判断并取值
  18. C语言简单进制转换器
  19. 入选“清华书单”和“中华优秀科普图书榜”​:《追问人工智能:从剑桥到北京...
  20. 【JavaScript框架封装】自己动手封装一个涵盖JQuery基本功能的框架及核心源码分享(单文件版本)...

热门文章

  1. Word并排插入多张图片 一行插入三张 排版方法汇总
  2. 【前端】保姆级的CSS简介
  3. 关于PPP-RTK技术优势的一些思考与总结
  4. RTK与网络RTK技术的发展现状
  5. GPS 车辆追踪软件 GIS系统和分布式
  6. java swing做横排下拉菜单
  7. dell服务器的raid磁盘管理器型号,Dell服务器PERC H310/H710/H810 RAID磁盘成员的在线管理和维护...
  8. 设计模式 | 责任链模式及典型应用
  9. 安卓目录说明,acct目录
  10. SEER区块浏览器开发指南