vue3创建响应式数据ref和reactive的区别

reactive和`ref`在Vue.js中都是用于创建响应式数据的,但它们之间存在一些区别

  • 定义数据类型不同。ref主要用于定义基本数据类型,如字符串、数字、布尔值等;reactive主要用于定义对象(或数组)类型的数据,但ref也可以用来定义对象或数组,其内部会自动通过reactive转为代理对象。
  • 实现原理不同。ref通过Object.defineProperty()的get和set实现数据代理;reactive使用Proxy实现数据代理,并通过Reflect操作源对象内部的数据。
  • 使用方式不同。使用ref定义的数据在模板中不需要使用.value来访问,但在JavaScript代码中需要使用.value来访问或修改;使用reactive定义的数据可以直接访问和修改对象或数组的属性或元素,无需使用.value。
  • 设计理念不同。ref主要是为了解决单一元素/数据的响应式问题;reactive则是为了解决JavaScript对象和数组等复杂数据结构的响应式问题。
javascript 复制代码
<script setup>
import { ref, reactive, onMounted } from 'vue'
import './index.css'

const count = ref({
  num: 0,
})
const obj = reactive({
  num: 0
})


const handleCount = () => {
  count.value.num++
  console.log(count)
}

const handleObj = () => {
  obj.num++
  console.log(obj)
}

onMounted(() => {
  console.log(1)
})
</script>

<template>
  <div class="m-home-wrap">
    <button @click="handleCount">{{ count.num }}</button>
    <button @click="handleObj">{{ obj.num }}</button>

    <div class="m-home-demo"></div>
  </div>
</template>

<style></style>

人工智能学习网站

https://chat.xutongbao.top

相关推荐
Dovis(誓平步青云)10 分钟前
现场问题先关闭还是先验收,建筑任务怎样处理依赖
前端·javascript·数据库·mysql·音视频
老王爱玩车13 分钟前
预处理详解
c语言·开发语言·学习
用户842981424181014 分钟前
压缩 ≠ 加密:前端代码保护的三层实践与踩坑记录
前端·javascript
灯澜忆梦31 分钟前
【Go Zap 日志库】#1 |快速上手 + 配置详解
开发语言·后端·golang
a努力。38 分钟前
四维解析Agent记忆架构:从零实战LangGraph长期记忆
java·开发语言·数据库
Wang's Blog1 小时前
Java 项目部署之 Docker工具快速入门: Docker Compose 初识与安装
java·开发语言·docker
niucloud-admin1 小时前
JAVA V6 多商户商城 开发文档——项目启动
java·开发语言·python
学逆向的1 小时前
C 控制台指令
c语言·开发语言·网络安全
沫璃染墨1 小时前
从零入门数据结构与算法(一):复杂度分析——从算法效率到时间与空间复杂度
c语言·开发语言·数据结构·笔记·算法·飞书
怕浪猫1 小时前
12个UI组件库,Star最低的下载最多
前端·javascript·面试