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)
相关推荐
Ten peaches23 分钟前
Selenium-Java版(环境安装)
java·前端·selenium·自动化
心.c35 分钟前
vue3大事件项目
前端·javascript·vue.js
姜 萌@cnblogs1 小时前
【实战】深入浅出 Rust 并发:RwLock 与 Mutex 在 Tauri 项目中的实践
前端·ai·rust·tauri
蓝天白云下遛狗1 小时前
google-Chrome常用插件
前端·chrome
多多*1 小时前
Spring之Bean的初始化 Bean的生命周期 全站式解析
java·开发语言·前端·数据库·后端·spring·servlet
linweidong2 小时前
在企业级应用中,你如何构建一个全面的前端测试策略,包括单元测试、集成测试、端到端测试
前端·selenium·单元测试·集成测试·前端面试·mocha·前端面经
满怀10152 小时前
【HTML 全栈进阶】从语义化到现代 Web 开发实战
前端·html
东锋1.32 小时前
前端动画库 Anime.js 的V4 版本,兼容 Vue、React
前端·javascript·vue.js
满怀10152 小时前
【Flask全栈开发指南】从零构建企业级Web应用
前端·python·flask·后端开发·全栈开发
小杨升级打怪中3 小时前
前端面经-webpack篇--定义、配置、构建流程、 Loader、Tree Shaking、懒加载与预加载、代码分割、 Plugin 机制
前端·webpack·node.js