vue中数据响应式选择ref还是reactive?

vue中响应式选择ref还是reactive合适

语法上来说,两者都可以实现响应式,之所以有ref和reactive,是为了更加方便的将不同的数据类型分类处理。

主要区别:reactive只能声明对象/数组,ref可以响应任意数据类型,但是使用时需要加.value进行解包。

但是在使用时,reactive直接赋值非常容易丢失响应式。推荐使用ref。

1.给响应式对象赋值。丢失响应式

javascript 复制代码
let arr = reactive([1,2])
//直接赋值或使用push等将导致state失去响应
arr=[3,4,5]
let obj =reactive({ id: 0 })
//这种方式失去响应式
obj = {id:1}
//给对应的属性赋值会保持响应式
obj.id = 1;


//使用ref就不会失去响应式,并且.value会提示你这是一个响应式数据
let arr2 = ref([1,2])
arr2.value = [3,4,5]

2.尤其是数组和对象,使用时需要特别注意

解构对象时,要想保持对象的响应式,注意使用toRefs函数,否则会失去响应式

javascript 复制代码
const obj = reactive({ data: 0 })
//使用toRefs解构,才不会丢失响应式
let { data } = toRefs(obj)
相关推荐
谭光志6 小时前
Vibe Coding 时代,程序员该何去何从
前端·后端·ai编程
仿生狮子8 小时前
别再说“全栈”了,AI 时代团队只认这 5 种人
前端·人工智能·后端
kyriewen8 小时前
AI 写的 React 组件,合并前必查的 6 个坏味道——每个都有代码对比
前端·javascript·react.js
Highcharts.js8 小时前
软件开发公司为什么选择 Highcharts?
前端·前端框架·echarts·数据可视化·技术选型·highcharts·图表工具
阿祖zu9 小时前
企业 AI 转型之痛,个人提效十倍不止,组织效率仍止步不前?
前端·aigc·agent
摇滚侠10 小时前
SpringBoot3+Vue3 全套视频教程 45-51
前端·javascript·vue.js
酸梅果茶10 小时前
【6】lightning_lm项目-LIO 前端 -点云预处理模块
前端·slam
Hilaku10 小时前
前端大裁员背后的恐慌:我们还剩什么底牌?
前端·javascript·程序员
咖啡无伴侣11 小时前
unplugin-auto-import 使用详解+面试高频考点
前端·架构
搬砖记录员11 小时前
录屏文件打不开?H.265兼容性踩坑与4种实战方案
前端