vue3 reactive丢失响应式

问题

使用 reactive 构造响应式对象时,当对其进行重新赋值后,会导致原有变量失去响应式,页面不会发生联动更新

例如:

1、使用 reactive 定义一个响应式的对象变量

let data1= reactive({name: '小李',date: '2024-03-18',address: 'xx地址'}
)

2、将属性渲染到页面上

<button @click="change">点击更新</button>
<div>{{data1.name}}</div>
const change = () => {let data2 = {name: '小胡',date: '2024-03-1',address: 'xx地址2'}data1 = data2 // 将 data2 赋值给 data1
}

点击按钮后,发现,<div>{{data1.name}}</div> 并没有变成 小胡

原因

data2 赋值给 data1 时,data1 的引用地址指向了 data2,但 data2 不是响应式的,所以更新后的 data1 并不会与 {{data1.name}} 产生联动

解决

方法一:简单数据类型用 ref 

let data1= ref({name: '小李',date: '2024-03-18',address: 'xx地址'}
)

ref 定义数据(包括对象)时,都会变成 RefImpl(Ref 引用对象) 类的实例,无论是修改还是重新赋值都会调用 setter,都会经过 reactive 方法处理为响应式对象。

注意赋值时是 data1.value = data2

方法二:复杂数据类型避免直接赋值,在外层包裹一个对象

let data = reactive({data1: {} }
) 
const change = () => {let data2 = {xxxx}data.data1 = data2
}

拓展

既然你说 data2 不是响应式的,那把 data2 变成响应式的再赋值不就好了吗?

例如使用element-plus中的表格组件,点击某一行时,需要将此行的数据赋值给一个响应式对象,由于获取的行数据是被Proxy包裹的,那会发生什么?

答案:响应会很慢,因为reactive响应式转换是“深层”的,它会影响到所有嵌套的属性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/761037.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PS IDEA VSCode MySQL Linux快捷键 整理

望多多转发 Photoshop快捷键 Photoshop提供了大量的快捷键&#xff0c;以帮助用户提高工作效率和流程的流畅性。以下是一些详细的Photoshop快捷键列表&#xff0c;包括文件操作、编辑操作、工具箱、文字处理和其他常用功能&#xff1a; 文件操作 新建文档&#xff1a;CTRLN…

解读“CFMS中国闪存市场峰会”存储技术看点-1

昨天CFMS中国闪存市场峰会在深圳举行&#xff0c;小编本来计划前往现场参加&#xff0c;但由于有事冲突未能如期前往&#xff0c;非常遗憾&#xff01; 本次峰会的主题是“存储周期激发潜能”。在闪存市场的供需关系逐渐恢复正常的阶段&#xff0c;闪存市场如何发展变化&#x…

Vue字符串里的中文数字转换为阿拉伯数字

js字符串里的汉字数字转化为数字 <template><view><view><view class"inpbox" ><textarea v-model"voiceMane" input"convert" ></textarea></view></view></view> </template> &…

【视频异常检测】Delving into CLIP latent space for Video Anomaly Recognition 论文阅读

Delving into CLIP latent space for Video Anomaly Recognition 论文阅读 ABSTRACT1. Introduction2. Related Works3. Proposed approach3.1. Selector model3.2. Temporal Model3.3. Predictions Aggregation3.4. Training 4. Experiments4.1. Experiment Setup4.2. Evaluat…

flink自定义函数如何从崩溃中恢复数据

背景 flink 提供的标准算子已经实现了可以从之前的checkpoint中恢复数据 思考 程序开发中,通常会自定义函数和计算指标,比较复杂 实现 通常情况下实现 CheckpointedFunction 这个接口即可 统计词频的小例子 public class SumTestProcessFunction extends ProcessFunct…

自然语言处理实战项目28-RoBERTa模型在BERT的基础上的改进与架构说明,RoBERTa模型的搭建

大家好,我是微学AI,今天给大家介绍下自然语言处理实战项目28-RoBERTa模型在BERT的基础上的改进与架构说明,RoBERTa模型的搭建。在BERT的基础上,RoBERTa进行了深度优化和改进,使其在多项NLP任务中取得了卓越的成绩。接下来,我们将详细了解RoBERTa的原理、架构以及它在BERT…

ensp不同vlan间的互相通信

关于不同vlan之间的通信&#xff0c;本章做了最简洁的案例&#xff0c;表示说明 1. 网段设置 1.1 划分四个不同 的 vlan vlan网段vlan10192.168.10.254 /24vlan20192.168.20.254 /24vlan30192.168.30.254 /24vlan40192.168.40.254 /24 1.2 SW1的配置 #进入视图 sys #更改交…

【面试】编程题:树的序列化与反序列化

【面试】编程题:树的序列化与反序列化 文章目录 【面试】编程题:树的序列化与反序列化前置1. 题意理解2. 代码前置 二叉树是一种常见的树形数据结构,它由节点组成,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树有很多特殊类型,如满二叉树、完全二叉树、…

QT的学习

代码练习 做一个UI登录页面 源文件 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);this->setWindowTitle("洛克启动&#xff01;");this->…

iOS报错-Command PhaseScriptExecution failed with a nonzero exit code

问题&#xff1a;iOS debug没问题&#xff0c;一打包就报错&#xff1a; Command PhaseScriptExecution failed with a nonzero exit code 解决方法如下&#xff1a; 在项目的Pods目录下&#xff0c;找到Targets Support Files->Pods-xxxx-frameworks.sh 如下&#xff1a…

代码随想录算法训练营第五十三天|LeetCode1143 最长公共子子序列、LeetCode1035 不相交的线、LeetCode53 最大子序和

1143.最长公共子序列 思路&#xff1a;定义dp[i][j]为以nums[i-1]结尾的子序列1&#xff0c;和以nums2[j-1]结尾的子序列2&#xff0c;他们的最长公共子序列长度。递推公式&#xff0c;如果nums1[i-1] nums2[j-1] &#xff0c; dp[i][j] dp[i-1][j-1]1。如果不相等&#xff0…

全域电商数据实现高效稳定大批量采集♀

全域电商&#xff0c;是近几年的新趋势&#xff0c;几乎所有商家都在布局全域&#xff0c;追求全域增长。但商家发现&#xff0c;随着投入成本的上涨&#xff0c;利润却没有增加。 其中最为突出的是——商家为保证全域数据的及时更新&#xff0c;通过堆人头的方式完成每日取数任…

hcip复习总结1

OSI----------- 定义了数据的产生标准 。 7 层 应用 ------- 表示 会话 传输 -----Telnet - 23 ssh---22 http---80 https-443 TCP ---- 传输控制卋议。是一种面向连接的可靠的传输卋议。 UDP---- 用户数据报卋议。是一种非面向连接的丌可靠传输卋议。 保证可靠性&…

Windows系统搭建web网站并结合内网穿透实现公网访问本地站点

文章目录 使用工具1. 本地搭建web网站1.1 下载phpstudy后解压并安装1.2 打开默认站点&#xff0c;测试1.3 下载静态演示站点1.4 打开站点根目录1.5 复制演示站点到站网根目录1.6 在浏览器中&#xff0c;查看演示效果。 2. 将本地web网站发布到公网2.1 安装cpolar内网穿透2.2 映…

如何实现自己的Spring Boot Starter

1、写一个 starter 项目&#xff0c;一般是一个空壳&#xff0c;里面不写代码&#xff0c;主要起到依赖其他项目的作用&#xff1b; 2、写一个真正实现自动装配逻辑的项目&#xff0c;在项目 classpath 下写一个 META - INF / spring . factories 文件&#xff1b; 3、在 spri…

分享一个ChatGPT 3.5和4.0(国内可用)【2024年3月】

一、ChatGPT的应用&#xff1a; 随着更多人接触并使用GPT&#xff0c;大众普遍赞同了一点&#xff1a;ChatGPT实在是用户体验超棒&#xff01; 现在大家认为最出色的版本无疑是3.5和4.0。通过使用他们&#xff0c;会清楚的发现&#xff1a; GPT-4.0在综合技能上的表现无疑更…

如何在CentOS7搭建DashDot服务器仪表盘并实现远程监控

文章目录 1. 本地环境检查1.1 安装docker1.2 下载Dashdot镜像 2. 部署DashDot应用3. 本地访问DashDot服务4. 安装cpolar内网穿透5. 固定DashDot公网地址 本篇文章我们将使用Docker在本地部署DashDot服务器仪表盘&#xff0c;并且结合cpolar内网穿透工具可以实现公网实时监测服务…

通过docker容器安装zabbix6.4.12图文详解(监控服务器docker容器)

目录 一、相关环境及镜像二、zabbix-server服务端部署1.使用docker创建zabbix-server服务端(1). 创建专用于Zabbix组件容器的网络(2). 启动空的MySQL服务器实例(3). 启动Zabbix Java网关实例(4). 启动Zabbix服务器实例并将实例与创建的MySQL服务器实例链接(5). 启动Zabbix Web界…

【Python】复习12:标准库与第三方库

目录 概念标准库第三方库总结Python 标准库`os` 模块`sys` 模块`json` 模块`re` 模块`datetime` 模块代码示例`os` 模块例子`sys` 模块例子`json` 模块例子`re` 模块例子`datetime` 模块例子第三方库`numpy``pandas``requests`安装第三方库使用第三方库其他一些流行的Python库数…

电磁兼容EMC:一文读懂TVS管选型设计

目录 1 TVS管外观结构 2 TVS管常见品牌 ​编辑3 TVS管命名规则 4 TVS管工作原理 5 TVS基本特点 6 TVS典型应用 7 TVS管电气参数说明 7.1 VRWM 截止电压&#xff0c;IR 漏电流 7.2 VBR 击穿电压 7.3 IPP 峰值脉冲电流&#xff0c;VC 钳位电压 8 TVS选型注意事项 8.1…