如果你使用过 Vue3,你知道的,在 Vue3 中有两个非常常用的响应式 API:reactiveref。它们会把我们想要追踪的数据变成响应式。

而且我们在使用时一直被告知 ref 用于创建基础类型的响应式,也可以创建引用类型的响应式。而对于引用类型,底层也是转换为 reactive 来进行响应式处理。那既然这样为撒还需要 reactive ,全部使用 ref 不就行了吗?

虽然 ref 创建的响应式数据在脚本中需要通过 .value 才能访问到呀!但是这里肯定影响不大。并且在模板中会自动添加上 .value,所以模板中不需要通过 .value 访问。

既然这二者基本没撒差别,但是还是暴露了 reactive 这个 API,难道有什么场景是 reactive 能做而 ref 做不了的?


简单了解 ref & reactive

我们先简单了解一下这两个 API。

reactive

返回对象的响应式副本,响应式转换是“深层”的——它影响所有嵌套 property。我们一般这样写。

const obj = reactive({ count: 0 })

并且可以直接使用。

const count = obj.count

ref

受一个内部值并返回一个响应式且可变的 ref 对象。ref 对象仅有一个 .value property,指向该内部值。我们一般是这样写。

const data = ref(xxx)

引用的时候,一般会通过data.value的方式引用。

const dataValue = data.value

通过跟踪 Vue3 的源代码可以证明,当我们调用 ref 方法来定义响应式数据时,当参数为对象类型时,其实里面用的是 reactive 方法。也就是说上面的 data.value ,事实上是 reactive 方法创造出来的。


总结

  1. reactive 能做的 ref 也能做,并且还是用 reactive 做的

  2. 当 ref 的参数为对象时,用的就是 reactive 方法

  3. 在 Vue3 中,如果是把对象类型的数据弄成响应式,reactive 和 ref 都可以,且ref 内部是通过r eactive 来支持的。也就是说,你 reactive 能做的,我 ref 也能做。

  4. 简单来说 ref 是在 reactive 上在进行了封装进行了增强,所以在 Vue3 中 reactive 能做的,ref 也能做,reactive 不能做的,ref 也能做。

  5. 个人理解ref是reactive的语法糖,如:ref(1) 就等价于 reactive({value: 1});

  6. 平时项目ref一把梭,是可以的,问题也不大

Vue3 的 ref 和 reactive 问题相关推荐

  1. Vue3 初探 ref、reactive 、及改变数组的值

    概况 Vue3 里要实现数据的响应式监听一共有两种方式既:ref 和 reactive 他们既有区别又有联系. ref() ref数据响应式监听.ref 函数传入一个值作为参数,一般传入基本数据类型, ...

  2. vue3中ref、reactive、shallowRef、 shallowReactive、toRaw、unref、toRef、toRefs、customRef使用与区别

    ref ref toRef 普通ref对象 特殊ref对象 不会和原始对象挂钩 创建的ref对象,与原始对象挂钩 重新渲染 不会触发渲染 -普通ref对象 不会和原始对象挂钩 重新渲染 如下面的例子中 ...

  3. vue3 - ref和reactive的区别

    文章搬运自wx60d4764eb475e 的vue3中ref和reactive的区别(系列六) 1. ref和reactive区别:     如果在template里使用的是ref类型的数据, 那么V ...

  4. 【Vue3】李南江老师讲解--个人笔记(二)ref 和 reactive详解

    [vue3笔记之 ref 和 reactive ] 实现响应式数据的方法 可以使用 ref,reactive定义响应式数据,本质上就是将传入的数据包装成一个Proxy对象. 使用 reactive 必 ...

  5. vue3中的ref 和 reactive 定义数组

    在vue3中,定义响应式数据一般有两种方式:ref 和 reactive 一般来说,我们使用 ref 来定义基本数据类型,使用 reactive 来定义复杂数据类型 但是也可以使用 ref 来定义数组 ...

  6. vue3 ref 和 reactive 区别

    前言 最近学习cloud项目,前端使用到 vue3 + ts 等技术,在写需求过程中遇到响应式数据问题,经百度查找相关笔记,在此记录一下,在实战中成长吧. 问题 出现的问题:定义一个默认数组并且 fo ...

  7. Vue3响应式API ref和reactive

    在vue3中,有两个重要的api分别是ref 和reactive 使用方法如下 import { reactive, ref } from 'vue';setup(){let student = re ...

  8. vue3 ref,reactive请求后的赋值问题以及解决方法

    vue3 ref,reactive请求后的赋值问题以及解决方法 ​ 开发的过程中,我们一定会进行接口的对接,将响应的结果赋值给我们页面上需要展示或者操作的变量,在vue3中,我们可能会稍微的有点不适应 ...

  9. vue3之实现响应式数据ref和reactive

    用途 ref.reactive都是vue3提供实现响应式数据的方法 ref() 接受一个内部值,返回一个响应式的.可更改的ref对象,此对象只有一个指向其内部的属性.value ref可以说是简化版的 ...

最新文章

  1. ORACLE 中极易混淆的几个 NAME 的分析和总结
  2. [javaSE] 网络编程(URLConnection)
  3. (转)解决multiple definition of的方法
  4. 小型车、中型车、大型车、重型车的区分和定义见下表:
  5. Django博客--5.让博客支持 Markdown 语法和代码高亮
  6. Linux信号实践(2) --信号分类
  7. 最近围绕生鲜社区团购的一些事
  8. python能做什么excel-python能做什么,python自学行吗?
  9. Oracle 自定义函数、存储过程
  10. type=button 字体大一点_机械制图中文字用什么字体?你所在的企业图纸中文字又是什么字体...
  11. mac虚拟机搭建设置静态ip
  12. 数据库三大顶级会议 VLDB ICDE SIGMOD
  13. C++网络编程(实例)
  14. java基础知识总结(三)
  15. 12月18日科技资讯|支付宝、微信回应3D面具破解人脸识别;ofo 否认「发币」;Kafka 2.4.0 发布
  16. python教程94--python两个excel表合并,删除不需要的数据操作流程
  17. 树莓派串口通信python,【树莓派Pico测评】- AD采集示例及串口通信
  18. 拉勾网职位数据爬取与分析(一)
  19. FLAC3D模拟:复杂模型的建立与导入
  20. 基于WebGL架构的3D可视化ThingJS平台—粮仓3D场景

热门文章

  1. CodeWarrior flash
  2. 脚本显示服务器超时,服务器诡异的请求超时问题
  3. 【软件测试】什么软件测试,软件测试和研发的区别
  4. 异常System.AccessViolationException的处理方式
  5. 主元素、主元素II、主元素III
  6. 一个普通高校学生入门C/C++入门的第一篇博客1.0.1
  7. 503 service unavailable 错误怎么解决?503 service unavailable 错误的解决方法。
  8. SLIM推荐模型及分析
  9. 06-图3. 六度空间 (30)
  10. Linux开放80端口