conselo.log:😊😊😊|

CodeForBetter

园龄:3年4个月粉丝:11关注:1

2024-03-13 18:02阅读: 1214评论: 0推荐: 2

玩转Vue3之shallowRef和shallowReactive

前言

Vue3 作为一款现代的 JavaScript 框架,引入了许多新的特性和改进,其中包括 shallowRefshallowReactive。这两个功能在Vue 3中提供了更加灵活和高效的状态管理选项,尤其适用于大型和复杂的应用程序。

Vue 3 的响应式系统

Vue3 引入了新的响应式系统,与 Vue2相比,它具有更好的性能和更多的功能。这个新系统基于 Proxy,为开发者提供了更直观、灵活的API,其中包括ref、reactive、shallowRef和shallowReactive等。之前的文章写过有关响应式系统的解释,在本博客中,我们将深入探讨这两个API,并提供一些具体的例子,以便更好地理解它们的用法和优势。

1.shallowRef:浅层响应式引用

shallowRef 是一个创建响应式对象的函数,与 ref 不同之处在于,shallowRef 只会在对象的第一层进行响应式处理。这意味着当对象的深层属性发生变化时,不会触发视图更新,从而提高了性能。
让我们看一个例子:

import { shallowRef, watchEffect } from 'vue';
const user = shallowRef({
name: 'John',
address: {
city: 'New York',
zip: '10001'
}
});
watchEffect(() => {
console.log('User changed:', user.value);
});
// 修改深层属性,不会触发视图更新
user.value.address.city = 'San Francisco';

在上面的例子中,watchEffect 只会在 name 属性发生变化时触发,而不会在 address 的变化时触发。这有助于避免不必要的性能开销,这对于一些场景非常有用,例如在处理大型数据集合时,可以提高性能并减少不必要的更新。

2.shallowReactive:浅层响应式对象

shallowRef 类似,shallowReactive 用于创建一个浅层响应式的对象。这意味着只有对象的第一层属性会被响应化,这对于避免在深层次对象中进行递归响应式转换非常有用。

import { shallowReactive, watchEffect } from 'vue';
const user = shallowReactive({
name: 'John',
address: {
city: 'New York',
zip: '10001'
}
});
watchEffect(() => {
console.log('User changed:', user);
});
// 修改深层属性,不会触发视图更新
user.address.city = 'San Francisco';

在上述例子中,watchEffect 只在 name 属性变化时触发,而 address 属性的变化不会引起更新。

使用场景

1. 性能优化

在处理大型数据集或嵌套对象时,使用 shallowRefshallowReactive 可以提高性能,避免不必要的响应式转换和更新。

2. 避免无限循环

当你在数据模型中存在相互引用的情况时,使用 shallowRefshallowReactive 可以帮助你避免创建无限循环的响应式数据。

3. 更精确的控制

如果你只关心对象的第一层属性,而不希望触发深层次的更新,那么 shallowRefshallowReactive 提供了更精确的控制。

结论

使用 shallowRefshallowReactive 的性能优势在于避免了深层对象的递归侦听,从而减少了触发响应式系统的次数。这对于大型项目和数据结构来说是非常有用的。

通过了解它们的使用方式和性能优势,我们可以更好地利用 Vue3 的响应式系统。始终记住,在使用这些特性时,要根据具体情况权衡性能和开发的便利性,确保你的代码保持清晰、易读和可维护。

本文作者:CodeForBetter

本文链接:https://www.cnblogs.com/CodeForBetter/p/18071219

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   CodeForBetter  阅读(1214)  评论(0编辑  收藏  举报
   
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示
  1. 1 第三人称 买辣椒也用券
  2. 2 依然爱你 yihuik苡慧
  3. 3 唯一 告五人
  4. 4 那么骄傲 孟静
依然爱你 - yihuik苡慧
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 王力宏

作曲 : 王力宏

原唱 : 王力宏

一闪一闪亮晶晶 留下岁月的痕迹

我的世界的中心 依然还是你

一年一年又一年 飞逝仅在一转眼

唯一永远不改变 是不停地改变

我不像从前的自己 你也有点不像你

但在我眼中你的笑 依然的美丽

日子只能往前走 一个方向顺时钟

不知道爱有多久 所以要让你懂

我依然爱你 就是唯一的退路

我依然珍惜 时时刻刻的幸福

你每个呼吸 每个动作 每个表情

到最后 一定会 依然爱你

我不像从前的自己 你也有点不像你

但在我眼中你的笑 依然的美丽

日子只能往前走 一个方向顺时钟

不知道爱有多久 所以要让你懂

我依然爱你 就是唯一的退路

我依然珍惜 时时刻刻的幸福

你每个呼吸 每个动作 每个表情

到最后 一定会 依然爱你

我依然爱你 或许是命中注定

多年之后任何人 都无法代替

那些时光 是我这一辈子最美好的

那些回忆 依然无法忘记

我依然爱你 就是唯一的退路

我依然珍惜 时时刻刻的幸福

你每个呼吸 每个动作 每个表情

到最后 一定会 依然爱你

你每个呼吸 每个动作 每个表情

到永远 一定会 依然爱你