当前位置: 首页 > news >正文

响应式数据ref()和reactive()的使用

官方网址:响应式基础 | Vue.js

在 Vue 3 中,refreactive 是用于创建响应式数据的两个核心 API。它们的用法和适用场景有所不同,以下是它们的详细说明和使用方法。

ref

ref 用于创建一个响应式的基本类型对象类型的数据。它会将数据包装在一个对象中,并通过 .value 访问或修改数据。

使用方法

  • 基本类型ref 通常用于基本类型(如 StringNumberBoolean 等)。

  • 对象类型ref 也可以用于对象类型,但更推荐使用 reactive

import { ref } from 'vue';
​
// 创建一个响应式的基本类型数据
const count = ref(0);
​
// 创建一个响应式的对象类型数据
const user = ref({
  name: 'Alice',
  age: 25
});
​
// 访问和修改数据
console.log(count.value); // 0
count.value++; // 修改数据
​
console.log(user.value.name); // Alice
user.value.age = 26; // 修改对象属性

在模板中使用

在模板中,ref 的值可以直接使用,不需要加 .value

<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="count++">Increment</button>
  </div>
</template>
​
<script setup>
import { ref } from 'vue';
​
const count = ref(0);
</script>

注意事项

<script setup> 脚本中和在模板中使用不同,在脚本中使用时必须使用.value去访问和修改,在模板中使用时不需要加.value

在js脚本中修改变量时,必须使用.value去赋值修改。

import { ref } from 'vue'
const count = ref(0)
​
console.log(count) // { value: 0 }
console.log(count.value) // 0
​
count.value++
console.log(count.value) // 1

不可以直接修改,错误示例如下:

import { ref } from 'vue'
const count = ref(0);
const str = ref('');
​
count = 2;//这是错误的
str = "小明";//这是错误的

reactive

英/riˈæktɪv/

reactive 用于创建一个响应式的对象(包括数组)。它会递归地将对象的所有属性转换为响应式数据。

使用方法

  • 对象类型reactive 主要用于对象或数组。

  • 基本类型reactive 不能直接用于基本类型。

import { reactive } from 'vue';
​
// 创建一个响应式的对象
const state = reactive({
  count: 0,
  user: {
    name: 'Alice',
    age: 25
  }
});
​
// 访问和修改数据
console.log(state.count); // 0
state.count++; // 修改数据
​
console.log(state.user.name); // Alice
state.user.age = 26; // 修改嵌套属性

ref和reactive区别

  • ref 适用于基本数据类型

  • reactive 适用于对象或数组,尤其是嵌套对象。

相关文章:

  • 嵌入式八股,内存泄漏
  • imutils opencv-python 的一些操作
  • C/C++中的字符串
  • TCP半连接、长连接
  • Windows获取字体文件
  • R语言安装教程(附安装包)R语言4.3.2版本安装教程
  • deepseek 清华大学[1-5版]全集
  • 【PX4日志解析报错】pyulog工具解析日志出错
  • 【管道 】
  • STM32的HAL库开发---ADC采集内部温度传感器
  • 大疆激光雷达录制的bag包无法解析出topic怎么办?
  • 【Blender】二、建模篇--07,置换修改器
  • 第14篇:Vue Router 高级用法与路由守卫
  • 2025教育与科研领域实战全解析:DeepSeek赋能细分场景深度指南(附全流程案例与资源)
  • Android 实现 RTMP 推流:快速集成指南
  • PyTorch 是如何进行机器学习的
  • stm32108键C-B全调性_动态可视化乐谱钢琴
  • conda 基本命令
  • HttpWatch 9.4.17 Pro网页调试与性能优化 资源工具分享
  • Leetcode-42. Trapping Rain Water [C++][Java]
  • 做视频直播网站/百度账号登录个人中心
  • 网站会员管理/付费恶意点击软件
  • 菏泽最好的网站建设公司/火星时代教育培训机构官网
  • 专门做正品的网站手机版/淄博seo培训
  • 如何建网站和推广/google搜索引擎免费入口
  • 北京市建设工程信息网站/三只松鼠营销案例分析