Vue3第一次使用:ref与reactive的区别和注意事项

观Vue3 官网,浅谈ref和reactive的区别。 ref和reactive都能设置响应性,reactive由于只能给对象设置响应性,并存在重新赋值以及解构赋值会丢失响应式的问题,官方更推荐使用ref()。ref()给对象设置响应式本质上也是过了一遍reactive()。 阅读详情

今天使用Vue3写了一个todo的例子

在这里插入图片描述

Vue3对我最大的感觉:

1、template标签下面可以有多个节点了,终于不用先写一个DIV了

2、setup函数可以代替之前的data,methods,computed,watch,Mounted等对象,但是props声明还是在外面。

不过我总是忘记在return里面写声明好的变量或者方法,导致报错没有这个变量或者函数。这一点还需要适应。希望以后能有方便的插件出现。

const todoList = reactive([])
const todoItem = ref('')

3、ref与reactive方法的区别是什么?一个是把值类型添加一层包装,使其变成响应式的引用类型的值。另一个则是引用类型的值变成响应式的值。所以两者的区别只是在于是否需要添加一层引用包装?其目的都是对数据添加响应式效果。

使用ref包装之后,需要使用.value才行进行取值和赋值操作。这就导致一个结果,就是在对象起属性名时,尽可能避开有value的属性名。因为会引起混淆,让人不知道是ref方法加上去的属性,还是原来对象就是这样的结构!

4、响应式对象里面如果有ref包装的值类型。则Vue会实现自动拆箱,即获取值的方式是object.property,而不是object.property.value,注意:只有响应式对象会是这样,响应式数组或者Map都不能这样。这一点在文档里面专门提到了。需要多注意。

在这里插入图片描述
上文说ref自动拆箱只发生在响应式对象内部。而在数组和原生集合如:Map里面访问ref是没有这种行为的。

5、watch监听没有响应式的变量时,需要方法包装,响应式变量可以直接监听。与Vue2的写法不同,要更需要小心和注意了。文档里面有说明

在这里插入图片描述

如果值类型监听,浏览器也会给你直接说明错误原因,很详细。

在这里插入图片描述

上面说:非法的监听源:<值>,源只能是一个getter函数,或者ref包装过的值,或者一个响应式对象,还有数组以上这些类型。

6、想自己下载Vue3来玩一玩的小伙伴,可以使用 npm init vite-app hello-vue3 命令下载一个Vue3的例子。然后用npm run dev启动就可以开始了。官方文档目前还是beta版本,但是已经基本不会大改了。文档地址

下面是源码:
真正的js代码其实还不到20行,比Vue2来说,真得是很大的进步了。节省了很多样板代码,逻辑也更加紧凑了。

<template>
  <h1>{{ msg }}</h1>
  <p>left {{ leftNum }} thing(s) have to do</p>
  <input v-model="todoItem" placeholder="write some thing todo" @keyup="e => { if(e.keyCode == 13) add() }">
  <button @click="add">add</button>
  
  <div v-for="(item, index) in todoList" :key="index">
    <input type="checkbox" @input="finish(index)">
    <input v-if="item.editable" v-model="item.value" @keyup="edited($event, index)">
    <span v-else :class="{'item-text':item.finished}" @dblclick="editable(index)">{{ item.value }}</span>
    <button @click="del(index)">del</button>
  </div>
</template>

<script>
import { ref, reactive, watch, computed, onMounted } from 'vue'
export default {
  name: 'HelloWorld',
  props: {
    msg: String
  },
  setup() {
    const todoList = reactive([])
    const todoItem = ref('')
    const leftNum = computed(() => todoList.filter(_ => !_.finished).length)
    const add = () => {
      todoList.push({value: todoItem.value, finished: false, editable: false})
      todoItem.value = ''
    }
    const finish = (index) => todoList[index].finished = !todoList[index].finished
    const del = (index) => todoList.splice(index, 1)
    // 编辑功能
    const editable = (index) => {
      if (!todoList[index].finished) todoList[index].editable = true
    }
    const edited = (event, index) => {
      if (event.keyCode == 13) todoList[index].editable = false
    }

    return {
      todoItem, todoList, leftNum,
      add, finish, del, editable, edited
    }
  },
}
</script>
<style scoped>
.item-text {
  text-decoration:line-through
}
</style>
前端Vue篇之Vue3响应式:Ref和Reactive 在Vue3中,Ref和Reactive是用于处理响应式数据的重要工具。它们帮助开发者管理数据的变化并自动更新相关的视图。在Vue3中,响应式是构建交互式Web应用程序的核心概念。Ref和Reactive是Vue3中用于创建响应式数据的重要工具。 阅读详情

相关推荐

Fortran环境配置:VS2022+Intel oneAPI安装全流程指南

Fortran环境配置:VS2022+Intel oneAPI安装全流程指南

shuyisuisuinian的博客 2万+

ref与reactive的区别

ref主要为了解决单一元素的响应式问题,而reactive是为了解决对象和数组等复杂类型数据结构的响应式问题。ref可用.value方式获取,而reactive需要通过reactive函数进行包装和创建。ref用于包装JS的基本数据类型,而reactive用于包装JS对象和数组等复杂类型的数据。欢迎补充,一起进步。

m0_69112199的博客 6363

OTP语音芯片SOP8的前世今生_如九齐_硕呈_钰绅等以及国产方案KT148A

语音芯片ic的其中一个品类,就是SOP8封装的OTP语音芯片,非常的经典和常用。源头的供应商基本都是台系的原厂,比如:九齐、硕呈、佑华等等,其中佑华就算是鼻祖了,早期的4位机也是在语音市场得到了升华。 OTP(One Time Programmable)是单片机的一种存储器类型,意思是一次性可编程:程序烧入单片机后,将不可再次更改和清除。

qyvhome的博客 1873

ref和reactive的区别

2. 使用方式不同:ref需要通过在模板中使用ref指令以及在JavaScript代码中使用ref函数进行创建和使用,而reactive则需要通过调用Vue.js提供的reactive函数进行包装和创建。总的来说,ref和reactive都是用于实现Vue.js组件的数据响应式更新,但是它们的使用方法、适用范围和设计理念等方面略有不同,需要根据具体的应用场景选择合适的API进行使用。ref和reactive都是Vue.js 3.x版本中新增的响应式API,用于实现组件的数据响应式更新。

Xxf909011的博客 2万+

浅谈MOS管的发热原因和解决办法

解读一下开关管发热原因,解决方案和开关损耗测试。

qq_45508321的博客 1万+

基于Unity引擎利用OpenCV和MediaPipe的面部表情和人体运动捕捉系统

增加了模型的绑定,利用Mediapipe这个强大的库可以实现识别面部表情的捕捉和人体结构运动的捕捉,基于以上的特性加入到Unity的人物模型中,实现实时的面部表情和人体运行的捕捉

BIgbossyii的博客 1万+

reactive和ref有什么区别

reactive 和 ref 是 Vue 3 中的两种响应式数据绑定方式,ref 适用于简单的响应式数据,而 reactive 则适用于复杂对象或数组的响应式数据。

weixin_46945750的博客 1万+

数据挖掘实战-基于长短期记忆网络(LSTM)的黄金价格预测模型 | 97% 准确度

本实验基于Kaggle上提供的从2013年到2023年的黄金价格数据集,运用长短期记忆网络(LSTM)构建了黄金价格预测模型。该数据集详细记录了每日的黄金价格信息,包括开盘价、收盘价、高点、低点和交易量等,为模型的训练提供了丰富的数据支持。

m0_64336780的博客 1万+

谈谈 Vue3 中的 ref 和 reactive

ref和reactive是Vue3中用来实现数据响应式的API 一般情况下,定义基本数据类型,定义引用数据类型 ref本质上是reactive的再封装reactive定义引用数据类型(以对象和数组举例),它能够将复杂数据类型的内部属性或者数据项声明为响应式数据,所以reactive的响应式是深层次的,其底层是通过ES6的来实现数据响应式,相对于Vue2的,具有能监听增删操作,能监听对象属性的变化等优点使用reactive定义对象数据类型举例

七公子77的技术博客 2万+

运营商拼命封杀的PCDN到底是个啥?

最近一段时间,很多宽带用户发现自家的网速莫名其妙变慢了,甚至收到了运营商发来的“违规使用宽带”警告短信,严重的甚至直接被断网。很多人一头雾水:我交了钱办的宽带,自己买的插件或者京东云、网心云这些硬件赚点“电费”,怎么就成了运营商眼中的“过街老鼠”?今天,我们就把这层窗户纸捅破,深度剖析这个让互联网大厂省下几十亿、让运营商恨得牙痒痒、让用户夹在中间进退两难的技术黑话——。

网络技术联盟站 917

10、使用Ray Serve实现微服务与模型部署

本文深入介绍了如何使用Ray Serve实现微服务与机器学习模型的高效部署。从基础的部署定义到复杂的模型服务场景,涵盖部署架构、HTTP与Python调用、资源配置、FastAPI集成、金丝雀发布策略及实际应用流程。文章还探讨了模型服务的关键需求如灵活性、批处理、硬件优化和可扩展性,并展示了Ray Serve如何满足这些要求。最后提供了常见问题解决方案与未来发展方向,帮助开发者构建高性能、易维护的模型服务平台。

blue42的博客 176

reactive与ref区别

ref通常用来定义基本类型数据reactive用来定义:对象(或者数组)类型数据ref也可以用来定义对象或者数组类型的数据,内部会通过reactive转为代理对象。

Anorry的博客 4125

量产导入 | 产品可靠性测试标准完整大集合(JEDEC/IEC/SAE…)

产品可靠性测试是产品质量保证中的重要一环, 包含有Pre-con, aging(寿命)和ESD(静电)等, 下面就收集了权威标准JEDEC全系列, 请参照如下 同时也附上其它的可靠性标准供大家参考及交叉理解, 可能侧重点不同, 大家可以参考下。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 1664

Vue3 的ref和reactive的用法和区别

ref和reactive是Vue3中用来实现数据响应式的API,一般情况下,ref定义基本数据类型,reactive定义引用数据类型。

Huangxianlong的博客 2457

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Vue3 ref和reactive使用上的区别,toRef与toRefs函数

https://www.cnblogs.com/kousum/p/14399280.html 在vue3中对响应式数据的声明官方给出了ref()和reactive()这两种方式

林中明月间丶 3811

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

三、【vue3新手必看】深度解析 ref 和 reactive 的奥秘

ref和reactive的使用方法以及区别

weixin_52814911的博客 4558

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

4.2 Vue3中reactive与ref详解及区别

reactive是为对象量身定制的响应式解决方案,使用方便但有解构陷阱。ref是一个通用的响应式容器,通过.value包装任何值,是处理基本类型和需要灵活替换场景的首选。两者可以结合使用,ref在reactive对象中会被自动解包。选择哪个主要取决于你的数据结构、编码习惯和对解包/解构的偏好。在现代 Vue 开发中,ref因其通用性而被广泛使用。

chxii的专栏 1540

Vue3——响应式实现(ref、reactive)

setup是Vue3中一个新的配置项,值为。eg:返回一个对象: App.vue eg2: 返回的是 在vue2中中的属性会通过原理最终包装成响应式数据_data。 vue3中为我们提供了两种包装响应式数据的方法:ref和reactive注意这里的ref和vue2中的ref不一样,这里是一个。上面使用setup包裹页面数据,但是这样编写出的数据不是响应式的,即数据改变页面不会被重新加载。从vue2中我们知道一个数据要实现响应式一定有对应的响应式得getter和setter方法,在vue3中通过帮我们生成响

mantou_riji的博客 5407

【Vue3响应式】ref、reactive,以及toRefs 函数

Vue3中的ref和reactive都是响应式数据的实现方式。在Vue3中,我们可以使用ref来将基本数据类型包装为一个响应式对象,使用reactive将对象包装为响应式对象。本文将介绍这两种响应式数据的实现方式以及它们之间的区别。 toRefs 函数可以将一个响应式对象转换为一组响应式属性。这个函数可以用于将父组件中的响应式对象传递给子组件,并在子组件中以单独的响应式属性的形式使用它们。

正在解锁骑着骆驼去南极的世界 1万+

Vue3 reactive()与ref()

Vue中reactive()和ref()介绍

2401_88961439的博客 1435

Vue3 中 ref 与 reactive 的区别及底层原理详解

ref和reactive是 Vue3 响应式系统的两大核心 API:•ref通过.value封装简化基本类型响应式,兼顾对象类型的灵活性。•reactive利用Proxy实现深度监听,适合复杂状态管理。开发者应根据数据类型、更新频率及使用场景选择最合适的 API,必要时结合toRefs优化代码结构。

警警的博客 1851

Vue3中reactive和ref的区别

Vue3中reactive和ref的区别

2401_87524444的博客 751

浅析Vue3中ref与reactive的使用和区别

浅析vue3中ref和reactive使用和区别以及应用场景

m0_46627407的博客 2426

Vue中.value使用的就基础是ref

在 Vue 3 中,.value是 Composition API 的一个重要概念,它使得我们能够访问和修改由ref创建的响应式数据。了解.value的使用场景、原理和最佳实践能够帮助开发者编写更高效、易于维护的代码。希望通过本文,你对.value有了更深入的理解,并能够在实际项目中灵活应用。

百锦再的博客 8054

Vue Vue3中的setup、ref、reactive

文章目录setupref 函数reactive 函数回顾 vue2.x 的响应式vue3的响应式reactive对比ref setup 1、理解:vue3.0 中一个新的配置项,值为一个函数 2、setup 是所有 Composition API(组合API) “表演的舞台” 3、组件中所用到的:数据、方法等等,均要配置在setup中 4、setup函数的两种返回值: ----①、若返回一个对象,则对象中的属性、方法,在模板中均可以直接使用(重点关注! ) ----②、若返回一个渲染函数:则可以自定义渲染内

Errol's Blog 2059
上一篇: 我对技术的态度是什么样的?
下一篇: git 常用功能
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值