首页 > 其他分享 >浅响应式数据(Shallow Reactive 和 Shallow Ref)

浅响应式数据(Shallow Reactive 和 Shallow Ref)

时间:2024-11-13 19:15:31浏览次数:3  
标签:响应 对象 shallowReactive Shallow Reactive state shallowRef Ref 属性

在Vue 3中,shallowReactive 和 shallowRef 是用于创建浅响应式数据的工具。它们与普通的 reactive 和 ref 不同,只对对象的第一层属性进行响应式处理,而不会递归地使嵌套对象的属性也变成响应式的。

  1. shallowReactive
    问题: 当你有一个嵌套较深的对象,并且你只关心对象的第一层属性是否是响应式的,而不希望整个对象的所有嵌套属性都变成响应式的。

解决方案: 使用 shallowReactive 来创建一个浅响应式对象。

示例代码:

import { shallowReactive } from 'vue'

const state = shallowReactive({
  count: 0,
  nested: {
    deepCount: 100
  }
})
// 修改第一层属性会触发响应式更新
	state.count = 1

// 修改嵌套对象的属性不会触发响应式更新
	state.nested.deepCount = 200
  1. shallowRef
    问题: 当你有一个对象,并且你只关心对象本身是否是响应式的,而不关心对象内部的属性是否是响应式的。

解决方案: 使用 shallowRef 来创建一个浅响应式引用。

示例代码:

import { shallowRef } from 'vue'

const state = shallowRef({
  count: 0,
  nested: {
    deepCount: 100
  }
})

// 修改对象本身会触发响应式更新
state.value = { count: 1, nested: { deepCount: 200 } }

// 修改对象内部的属性不会触发响应式更新
state.value.nested.deepCount = 300

总结:
shallowReactive 只对对象的第一层属性进行响应式处理,嵌套对象的属性不会变成响应式的。
shallowRef 只对对象本身进行响应式处理,对象内部的属性不会变成响应式的。

标签:响应,对象,shallowReactive,Shallow,Reactive,state,shallowRef,Ref,属性
From: https://blog.csdn.net/y19917750683/article/details/143750340

相关文章

  • 《深度解析 C++中的弱引用(weak reference):打破循环依赖的利器》
    在C++编程的世界里,内存管理一直是一个关键且复杂的话题。而弱引用(weakreference)的出现,为我们处理一些特殊的内存相关问题提供了一种巧妙的方法。今天,我们就来深入了解一下什么是弱引用。一、从引用的基本概念说起我们都知道,在C++中,引用是一种给变量起别名的方式。正常......
  • AT_agc011_d [AGC011D] Half Reflector 题解
    用\(1\)表示A,\(0\)表示B,观察进行一次操作后字符串会发生什么变化。首先当第一个数为\(1\)时,只会将第一个数变为\(0\)。对于剩下的情况,手玩一下可以发现会将第一个数移到末尾,然后将所有数异或\(1\)。先考虑暴力怎么做,可以记一个指针\(i\)和当前应该给全体数异或的值\(......
  • 在Odoo开发中,ref是一个非常重要的函数,用于在XML文件中引用其他数据的ID,帮助我们快速定
    在Odoo开发中,ref是一个非常重要的函数,用于在XML文件中引用其他数据的ID,帮助我们快速定位和调用系统中已经存在的记录。ref的全称是reference,可以通过该函数引用特定的视图、字段、模型等元素,从而在模块开发中实现跨文件、跨模块的引用。下面我会详细解释ref的作用,并提供丰富的示例......
  • [题解](更新中)Refact.ai Match 1 (Codeforces Round 985)
    A-Set显然答案是\(\max(\lfloor\frac{r}{k}\rfloor-l+1,0)\)。点击查看代码#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intt,l,r,k;signedmain(){ cin>>t; while(t--){ cin>>l>>r>>k; cout<<max(0ll,......
  • AT_agc012_f [AGC012F] Prefix Median 题解
    首先将序列排序,这是显然的。考虑倒着确定\(b\)序列中的每个数。即从完整的\(a\)序列开始,每次删掉两个数,记录中位数。先找出\(b\)序列合法的条件。容易发现对于所有\(i\),在\(b_{p_i}\)成为中位数时,\(p_i,p_{i+1}\)之间的所有数都已经被删除了,且\(i\lep_i\le2n-i\)。......
  • Refact.ai Match 1 (Codeforces Round 985)
    A.Set二分出最大数满足至少有\(k\)个倍数的数。#include<bits/stdc++.h>usingnamespacestd;usingi32=int32_t;usingi64=longlong;#defineinti64usingvi=vector<int>;usingpii=pair<int,int>;consti32inf=INT_MAX/2;constintmo......
  • Refact.ai Match 1 (Codeforces Round 985, Div. 1 + Div. 2)
    ContestLinkAEasymathproblem.SubmissionB大胆贪心猜结论,容易想到一个套路化的stack做法。SubmissionC容易想到是个二分题,二分答案\(k\)表示答案能否\(\geqk\)。统计一下前缀最大然后\(O(n)\)的写一个check就可以了。SubmissionD......
  • Springboot 的Servlet Web 应用、响应式 Web 应用(Reactive)以及非 Web 应用(None)的特点
    基于Servlet的Web应用(ServletWeb)    特点         使用传统的ServletAPI和SpringMVC框架。         采用阻塞I/O模型,每个请求都会占用一个线程直到请求处理完毕。         适合处理同步请求-......
  • 关于vue里的$refs属性
    vuejs的极大程度的帮助减少了对dom的操作,他主要通过添加ref属性,但是当获取this.$refs属性时,稍有不注意就会输出undefined导致我们对dom节点的操作报错。this.$refs.xxx为undefined的几种情况记录:1、在created里钩子函数中调用原因:created()在实例创建完成后被立即调用。在这一步,实......
  • 【人脸伪造检测】Spatial-Phase Shallow Learning: Rethinking Face Forgery Detectio
    一、研究动机[!note]创新点:利用相位谱实现伪造检测,并且证明了卷积模型可以提取隐性特征。由于上采样是伪造模型的关键步骤,这篇论文通过相位信息检测上采样的伪影。对比之前的频率模型:F3-Net:通过离散余弦变换后的统计特征实现伪造检测二、检测模型可学习的知识点......