ref和reactive区别

使用区别

reactive定义引用数据类型,ref 定义基本类型

reactive定义的变量直接使用,ref 定义的变量使用时需要.value

模板中均可直接使用,vue帮我们判断了是reactive还是ref定义的(通过__v_isRef属性),从而自动添加了.value。

cpp 复制代码
// 定义
let count = ref(0);
let obj = reactive({a: 1, b: 2});
// 使用
count.value = 1;
menu  = {a: 1, b: 2, c: 3};

return {
	count,
	...toRefs(menu)
}

ref

ref 用于创建一个简单的响应式数据,即一个基本类型的数据,比如数字、字符串等,它会将这个基本类型数据包装成一个响应式对象,并且返回一个带有.value属性的对象。

这样,我们在对这个响应式对象进行读取或修改时,就可以直接使用.value来访问或修改它的值。

reactive

reactive 用于创建一个复杂的响应式数据,即一个对象或数组。

它会将这个对象或数组的所有属性或元素都转化为响应式数据,并返回一个响应式对象。

我们在对这个响应式对象进行读取或修改时,可以直接使用点操作符或数组下标来访问或修改它的属性或元素。

cpp 复制代码
<template>
  <div>
    <p>count: {{ count.value }}</p>
    <button @click="increment">increment</button>
    <p>person: {{ person.name }}, {{ person.age }}</p>
    <button @click="updatePerson">update person</button>
  </div>
</template>

<script>
import { ref, reactive } from 'vue';

export default {
  setup() {
    // 使用 ref 创建一个响应式的基本类型变量
    const count = ref(0);

    // 使用 reactive 创建一个响应式的对象
    const person = reactive({
      name: 'Alice',
      age: 20,
    });

    // 点击按钮,修改 count
    const increment = () => {
      count.value++;
    };

    // 点击按钮,修改 person
    const updatePerson = () => {
      person.name = 'Bob';
      person.age = 30;
    };

    return {
      count,
      person,
      increment,
      updatePerson,
    };
  },
};
</script>
相关推荐
jinanwuhuaguo1 分钟前
(第二十九篇)OpenClaw 实时与具身的跃迁——从异步孤岛到数字世界的“原住民”
前端·网络·人工智能·重构·openclaw
广州华水科技7 分钟前
深度测评2026年单北斗GNSS位移监测系统推荐,与高口碑变形监测设备一同引领行业新风尚
前端
大飞记Python14 分钟前
【2026更新】Python基础学习指南(AI版)——04数据类型
开发语言·人工智能·python
Alice-YUE1 小时前
【js高频八股】防抖与节流
开发语言·前端·javascript·笔记·学习·ecmascript
云泽8081 小时前
C++11 核心特性全解:列表初始化、右值引用与移动语义实战
开发语言·c++
froginwe111 小时前
DOM 加载函数
开发语言
Hello eveybody2 小时前
介绍一下背包DP(Python)
开发语言·python·动态规划·dp·背包dp
AI进化营-智能译站2 小时前
ROS2 C++开发系列12-用多态与虚函数构建可扩展的ROS2机器人行为模块
开发语言·c++·ai·机器人
iCxhust2 小时前
微机原理实践教程(C语言篇)---A002流水灯
c语言·开发语言·单片机·嵌入式硬件·51单片机·课程设计·微机原理
是上好佳佳佳呀2 小时前
【前端(十一)】JavaScript 语法基础笔记(多语言对比)
前端·javascript·笔记