vue中的ref/reactive区别及原理

Vue中的ref和reactive是两种不同的数据响应式管理方式。

ref是Vue 3中新加入的特性,它可以将一个普通的JavaScript对象转换为响应式对象。通过ref创建的响应式对象在访问和修改时会自动触发重新渲染。ref返回的是一个包含value属性的对象,访问或修改数据时需要通过value属性进行操作。

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

const count = ref(0);

// 访问响应式数据
console.log(count.value);

// 修改响应式数据
count.value++;

// ref对象仍然是一个对象
console.log(count); // { value: 1 }

reactive是Vue 2中的一个API,它可以将一个普通的JavaScript对象转换为响应式对象。通过reactive创建的响应式对象被称为响应式数据。访问和修改响应式数据时,Vue会跟踪数据的变化并触发视图的更新。

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

const state = reactive({
  count: 0
});

// 访问响应式数据
console.log(state.count);

// 修改响应式数据
state.count++;

// state对象仍然是一个对象
console.log(state); // { count: 1 }

原理上,ref和reactive都是通过Proxy实现的。当访问响应式对象的属性时,Vue会使用Proxy拦截访问操作,并将该属性标记为依赖,当属性被修改时,Vue会触发相应的更新操作。ref和reactive的区别在于ref是对对象的包装,而reactive是对整个对象进行响应式化处理。

相关推荐
源码云商1 小时前
【带文档】网上点餐系统 springboot + vue 全栈项目实战(源码+数据库+万字说明文档)
数据库·vue.js·spring boot
!win !1 小时前
uni-app小程序登录后…
前端·uni-app
Nightne1 小时前
CSS图片垂直居中问题解决方案
前端·css
魔术师ID2 小时前
vue 指令
前端·javascript·vue.js
凌冰_2 小时前
CSS3 变形
前端·css·css3
Clown952 小时前
Go语言爬虫系列教程 实战项目JS逆向实现CSDN文章导出教程
javascript·爬虫·golang
GISer_Jing2 小时前
前端图形渲染 html+css、canvas、svg和webgl绘制详解,各个应用场景及其区别
前端·html·图形渲染
零凌林2 小时前
使用exceljs将excel文件转化为html预览最佳实践(完整源码)
前端·html·excel·vue3·最佳实践·文件预览·exceljs
星空寻流年2 小时前
css3基于伸缩盒模型生成一个小案例
javascript·css·css3
二十雨辰3 小时前
[CSS3]属性增强1
前端·css·css3