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

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

  • 定义数据类型不同。ref主要用于定义基本数据类型,如字符串、数字、布尔值等;reactive主要用于定义对象(或数组)类型的数据,但ref也可以用来定义对象或数组,其内部会自动通过reactive转为代理对象。
  • 实现原理不同。ref通过Object.defineProperty()getset实现数据代理;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

相关推荐
JieE2129 小时前
LeetCode 226. 翻转二叉树|JS 递归超详细拆解,二叉树入门经典题
javascript·算法
JieE2129 小时前
LeetCode 104. 二叉树的最大深度|递归思路超详细拆解
javascript·算法
kyriewen13 小时前
我用 AI 一周写完了整个项目,上线第一天就崩了——这是我踩过最贵的 5 个坑
前端·javascript·ai编程
Larcher13 小时前
AI Loop:让AI像人一样自主完成任务的核心机制
javascript·人工智能·设计模式
默_笙13 小时前
🃏 JS 只有 8 种数据类型,但我花了 2 天才搞懂 null 和 undefined 的区别
javascript
jump_jump14 小时前
流式 HTML:从 htmx 片段装配到浏览器原生增量渲染
javascript·性能优化·前端工程化
swipe15 小时前
正则表达式入门到进阶:从表单校验到手写模板引擎
前端·javascript·面试
kyriewen16 小时前
前端错误监控最全指南:捕获 JS 异常、Promise 拒绝、资源加载失败,附上报代码
前端·javascript·监控
大家的林语冰16 小时前
ESLint 近期动态大全,新版本正式发布,antfu 大佬推荐的插件也更新了!
前端·javascript·前端工程化
胡志辉17 小时前
深入浅出 call、apply、bind
前端·javascript·后端