`shallowReactive` 与 `shallowRef`:浅层响应式 API

🤍 前端开发工程师、技术日更博主、已过CET6

🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1

🕠 牛客 高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》

🍚 蓝桥云课 签约作者、上架课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》

文章目录

在 Vue3 中,shallowReactive 和 shallowRef 是两种特殊的响应式 API,它们提供了一种浅层响应式的方式来处理对象和引用类型的数据。

shallowReactive

shallowReactive 创建一个浅层响应式对象。这意味着只有对象的顶层属性是响应式的,嵌套的对象属性不会被转换为响应式。

使用 shallowReactive

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

const state = shallowReactive({
foo: 1,
bar: {
baz: 2
}
});

// 改变顶层属性会触发更新
state.foo++; // 响应式

// 改变嵌套属性不会触发更新
state.bar.baz++; // 非响应式

shallowRef

shallowRef 创建一个浅层响应式的引用。与普通的 ref 不同,shallowRef 只有在引用的值本身改变时才会触发更新,如果引用的对象内部的属性发生变化,不会触发更新。

使用 shallowRef

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

const state = shallowRef({
foo: 1,
bar: {
baz: 2
}
});

// 改变引用的值会触发更新
state.value = { foo: 2 }; // 响应式

// 改变引用对象的属性不会触发更新
state.value.bar.baz++; // 非响应式

适用场景

shallowReactive 和 shallowRef 适用于以下场景:

  • 当你有一个大型数据结构,并且只想对顶层属性进行响应式处理时。
  • 当你知道嵌套对象不会改变,或者你不关心嵌套对象内部的变化时。
  • 当你需要优化性能,并且可以接受一定程度的非响应式行为时。

总结

  • shallowReactive 和 shallowRef 提供了浅层响应式的行为,只有顶层属性或引用本身的改变才会触发更新。
  • 这两种 API 在处理大型数据结构或优化性能时非常有用。
  • 使用它们时需要注意,嵌套对象的内部变化不会触发视图更新。
相关推荐
梦帮科技3 分钟前
Web 漏洞攻防深度:WAF 规则逃逸技术(畸形分块传输、双重编码)与对抗加固
linux·前端·网络安全·ssl·web
兰亭妙微UI设计公司10 分钟前
兰亭妙微软件界面设计公司的解锁按钮设计10大密码
开发语言·前端·javascript
迪幻33 分钟前
封装自己的 npm 依赖并存储到个人 GitHub
前端·npm·github
u0111026751 小时前
WebP 转成 PNG 后为什么更大?图片格式转换不等于压缩
前端·javascript·vue.js
万少1 小时前
Qoder sonus模型 20分钟,复刻 马斯克 飞天汽车
前端·后端·算法
seconp1 小时前
基于Spring Boot和Vue 3的智慧旅游网站:住宿预订、行程规划与千问接入
vue.js·spring boot·毕业设计·软件工程·课程设计·旅游·毕设
java1234_小锋1 小时前
【技术专题】HTML5 网页技术 - HTML5 列表标签
前端·html·html5
强二小哥帅1 小时前
Kotlin 协程复习笔记
前端
不可能片场1 小时前
工程实践 原子替换改了 ctime 怎么修
前端·electron
暧暧内含光1 小时前
HTTP 文件传输体系全解:从协议标头、OSS 架构到流媒体分片
前端