vue3中reactive和ref如何使用和区别

在Vue3中,reactiveref都是响应式API。它们都可以用于创建响应式数据和观察其变化。

区别:

ref函数需要传入一个初始值,并返回一个对象,该对象有一个value属性,可以直接读取和赋值。而reactive函数可以传入一个普通对象,并生成一个响应式对象,该对象可以直接读取和修改属性。

示例:

javascript 复制代码
import { reactive, ref } from 'vue'

// ref示例
const count = ref(0)
console.log(count.value) // 0
count.value++ // 直接对value属性进行赋值
console.log(count.value) // 1

// reactive示例
const state = reactive({
  count: 0,
  name: 'John'
})
console.log(state.count) // 0
state.count++ // 直接对属性进行赋值
console.log(state.count) // 1

ref函数适用于简单类型变量,比如数字、字符串等。而reactive函数适用于复杂类型变量,比如对象和数组。

示例:

javascript 复制代码
import { reactive, ref } from 'vue'

// ref示例
const age = ref(18)
const name = ref('John')
console.log(age.value, name.value) // 18 John
age.value++ // 直接对value属性进行赋值
name.value = 'Mary'
console.log(age.value, name.value) // 19 Mary

// reactive示例
const state = reactive({
  name: 'John',
  info: {
    age: 18,
    sex: '男'
  }
})
console.log(state.info.age, state.info.sex) // 18 男
state.info.age++ // 直接对属性进行赋值
state.name = 'Mary'
console.log(state.info.age, state.name) // 19 Mary

综上所述,refreactive在使用上有所区别,适用于不同的场景。ref适用于简单类型变量,而reactive适用于复杂类型变量。

相关推荐
天疆说10 分钟前
Zotero Connector 在 Edge 里找不到桌面 Zotero(Linux / Zotero 9.0.6 / Edge 150)
linux·前端·edge
李伟_Li慢慢2 小时前
02-从硬件说起WebGL
前端·three.js
kyriewen2 小时前
看了微软几万人用AI编程的数据——效率涨24%的代价没人提
前端·ai编程·claude
2601_963771373 小时前
How to Scale Your WordPress Store Traffic in 2026
前端·php·plugin
亿元程序员3 小时前
老板说我的3D箭头游戏用来做试玩太普通了,没人想玩,让我变点花样...
前端
李伟_Li慢慢3 小时前
01-threejs架构原理-课程简介
前端·three.js
_瑞5 小时前
深入理解 iOS 渲染原理
前端·ios
IT_陈寒5 小时前
SpringBoot自动配置失灵?你可能忘了这个关键注解
前端·人工智能·后端
碎碎念_4925 小时前
SpringBoot + Vue 前后端分离从 0 到 1 完整环境配置流程
vue.js·spring boot·后端
iCOD3R5 小时前
Skill - kill-ai-slop 解决“AI 味”样式
前端·css·ai编程