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

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

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

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

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

文章目录

在 Vue3 中,shallowReactiveshallowRef 是两种特殊的响应式 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++; // 非响应式

适用场景

shallowReactiveshallowRef 适用于以下场景:

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

总结

  • shallowReactiveshallowRef 提供了浅层响应式的行为,只有顶层属性或引用本身的改变才会触发更新。
  • 这两种 API 在处理大型数据结构或优化性能时非常有用。
  • 使用它们时需要注意,嵌套对象的内部变化不会触发视图更新。
相关推荐
2501_915106322 小时前
移动端网页调试实战,iOS WebKit Debug Proxy 的应用与替代方案
android·前端·ios·小程序·uni-app·iphone·webkit
柯南二号3 小时前
【大前端】React Native 调用 Android、iOS 原生能力封装
android·前端·react native
睡美人的小仙女1274 小时前
在 Vue 前端(Vue2/Vue3 通用)载入 JSON 格式的动图
前端·javascript·vue.js
yuanyxh4 小时前
React Native 初体验
前端·react native·react.js
大宝贱5 小时前
H5小游戏-超级马里奥
javascript·css·html·h5游戏·超级马里奥
程序视点5 小时前
2025最佳图片无损放大工具推荐:realesrgan-gui评测与下载指南
前端·后端
程序视点6 小时前
2023最新HitPaw免注册版下载:一键去除图片视频水印的终极教程
前端
喔烨鸭6 小时前
前后端分离情况下,将本地vue项目和Laravel项目以及mysql放到自己的云服务器
vue.js·mysql·laravel
小只笨笨狗~7 小时前
el-dialog宽度根据内容撑开
前端·vue.js·elementui
weixin_490354347 小时前
Vue设计与实现
前端·javascript·vue.js