ref() 和 reactive() 区别

news/2025/1/13 13:08:44/

ref() 和 reactive() 都是 Vue 3 中用于创建响应式数据的方法,但它们之间存在一些关键差异。

首先,ref() 用于创建响应式的标量值,比如数字、字符串、布尔值等基本数据类型,以及对象和数组等复杂数据类型。当你使用 ref() 时,你会得到一个带有 .value 属性的对象,这个对象是响应式的。例如:

const count = ref(0)

这里的 count 是一个响应式的 ref 对象,你可以通过 count.value 来访问和修改它的值。

而 reactive() 用于创建响应式的对象和数组。它接受一个对象或数组,并返回一个响应式的代理对象。例如:

const state = reactive({ count: 0 })

这里的 state 是一个响应式的对象,你可以直接访问和修改它的属性,如 state.count

所以,主要的区别在于:

  1. 用途

    • ref():适用于各种数据类型,包括基本类型和引用类型。

    • reactive():仅适用于对象和数组。

  2. 访问和修改

    • ref():通过 .value 属性访问和修改值。

    • reactive():直接访问和修改对象的属性。

  3. 嵌套数据的响应式

    • ref():如果内部包含对象或数组,需要递归地使用 ref() 或 reactive()

    • reactive():自动处理嵌套对象和数组的响应式。

  4. 性能

    • reactive():对于大量数据的对象,性能可能优于使用多个 ref()

总之,根据你的数据类型和需求,你可以选择使用 ref() 或 reactive() 来创建响应式数据。对于基本类型和单个值,ref() 是一个好选择;对于复杂的对象和数组,reactive() 更为适合。

示例

使用 ref()

import { ref } from 'vue'

export default {

setup() {

const count = ref(0)function increment() {count.value++}return {count,increment}

}

}

使用 reactive()

import { reactive } from 'vue'

export default {

setup() {

const state = reactive({ count: 0 })function increment() {state.count++}return {count: state.count,increment}

}

}


http://www.ppmy.cn/news/1562813.html

相关文章

LeetCode:216.组合总和III

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:216.组合总和III 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数…

EasyExcel上传校验文件错误信息放到文件里以Base64 返回给前端

产品需求: 前端上传个csv 或 excel 文件,文件共4列,验证文件大小,类型,文件名长度,文件内容,如果某行某个单元格数据验证不通过,就把错误信息放到这行第五列,然后把带有…

STM32 物联网智能家居 (一) 方案设计STM32+ESP8266+TCP/UDP/MQTT

STM32 物联网智能家居 (一) 方案设计STM32ESP8266TCP/UDP/MQTT 下面我们要开展物联网智能家居的博客专栏,该专栏我们会将STM32各种外设模块I2c、Usart、Wifi、ESP8266、分层编程思想以及调试的方法融入到整个专栏中,让你从一个单片机小白,进…

浅聊MySQL中的LBCC和MVCC

MySQL中的LBCC(Lock-Based Concurrency Control,基于锁的并发控制)和MVCC(Multi-Version Concurrency Control,多版本并发控制)是两种不同的并发控制机制,它们在实现方式、作用以及应用场景上存…

MySQL教程之:获取有关数据库和表的信息

如果您忘记了数据库或表的名称,或者给定表的结构是什么(例如,它的列叫什么)怎么办?MySQL通过几个语句来解决这个问题,这些语句提供了有关它支持的数据库和表的信息。 您之前看过SHOW DATABASES&#xff0c…

隐私计算,构建安全的未来数据空间

大数据产业创新服务媒体 ——聚焦数据 改变商业 在医疗领域,不同医院之间需要共享患者数据,以提供更全面准确的诊断和治疗方案。 传统的数据处理方式通常是数据经过转换隐藏重要数据后再进行分析,虽然可以保护数据隐私,但在数据源…

Guilite字库工具

目录 前言 使用方法 离线字库解析 工具链接 前言 最近通过Qt写了一个Guilite字库工具,相比原始工具,主要有以下几个优点: (1)支持同时生成多套字库 (2)支持离线字库生成 (3&a…

Hive SQL必刷练习题:连续问题 间断连续

问题描述: 1) 连续问题:找出连续三天(或者连续几天的啥啥啥)。 2) 间断连续:统计各用户连续登录最长天数,间断一天也算连续,比如1、3、4、6也算登陆了6天 问题分析&am…