前端Vue篇之vue3 ref 能处理对象了?

在 Vue 3 中,ref 确实可以用来处理对象了。Vue 3 引入了 Composition API,这是一个新的编写组件的方式,它使得处理响应式数据更加灵活和高效。ref 是 Composition API 中的一个函数,用于创建一个响应式的引用数据。当你使用 ref 来处理基本数据类型(比如字符串、数字等)时,它会自动被包裹在一个对象里,你可以通过 .value 属性来访问或修改这个数据。

对于对象,Vue 3 提供了一个叫做 reactive 的函数,它专门用来创建响应式的对象。但这并不意味着 ref 不能处理对象。实际上,你也可以使用 ref 来处理对象,只是当你这么做时,整个对象会被作为一个响应式引用来处理,而不是对象内部的每个属性。这意味着,如果你直接修改对象内部的属性,这个修改不会触发界面更新。但如果你替换了整个对象,界面则会相应更新。

简而言之,使用 ref 来处理对象是完全可行的,只是它的工作方式与处理基本数据类型有所不同。如果你需要一个响应式的对象,并且希望对象内部的修改能够触发更新,那么使用 reactive 更加合适。如果你只是需要一个对象的引用,并且可以接受通过替换整个对象来触发更新,那么使用 ref 就足够了。

举个例子,假设你有一个用户对象,你可以这样使用 ref:

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

const user = ref({
  name: 'John',
  age: 30
})

// 访问属性
console.log(user.value.name) // "John"

// 修改属性值不会触发更新
user.value.name = 'Jane'

// 替换整个对象会触发更新
user.value = { name: 'Jane', age: 30 }

在上面的示例中,我们使用 ref 创建了一个包含对象的响应式引用 obj,然后可以通过 obj.value 来访问和修改对象的属性。请注意,在使用 ref 处理对象时,需要通过 obj.value 来访问对象的属性。

而如果你使用 reactive,则可以直接修改对象内的属性并触发更新:

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

const user = reactive({
  name: 'John',
  age: 30
})

// 直接修改属性
user.name = 'Jane' // 这会触发界面更新

如果您需要更复杂的对象处理,推荐使用 reactivetoRefs 来处理对象,这样可以更好地管理对象的响应性和引用。

相关文章:
前端Vue篇之Vue3响应式:Ref和Reactive

相关推荐
滑雪的企鹅.1 小时前
HTML头部元信息避坑指南大纲
前端·html
一拳不是超人1 小时前
老婆天天吵吵要买塔罗牌,我直接用 AI 2 小时写了个在线塔罗牌
前端·ai编程
阿丰资源2 小时前
SpringBoot+Vue实战:打造企业级在线文档管理系统
vue.js·spring boot·后端
excel3 小时前
如何解决 Nuxt DevTools 中关于 unstorage 包的报错
前端
Rust研习社3 小时前
使用 Axum 构建高性能异步 Web 服务
开发语言·前端·网络·后端·http·rust
C澒3 小时前
AI 生码 - API2Code:接口智能匹配与 API 自动化生码全链路设计
前端·低代码·ai编程
浔川python社3 小时前
HTML头部元信息避坑指南技术文章大纲
前端·html
IT_陈寒3 小时前
SpringBoot配置加载顺序把我坑惨了
前端·人工智能·后端
kyriewen3 小时前
Next.js部署:从本地跑得欢,到线上飞得稳
前端·react.js·next.js
Moment3 小时前
面试官:给 llm 传递上下文,有哪几个身份 role ❓❓❓
前端·后端·面试