直接赋值导致响应式断开,前端深浅拷贝


title: 直接赋值导致响应式断开,前端深浅拷贝
date: 2024-06-08 09:56:05
tags: vue3

vue3中的ref对象的深浅拷贝问题,实际应用出现的相关的问题。

概念总述

浅拷贝

仅仅复制了数据,没有改变他原来的引用。

表现:当你对新对象进行修改的时候,会影响到你拷贝的本来对象。

深拷贝

复制了原来的数据,改变了数据原来的引用,放在了分配了数据的新的地址。

表现:对新的数据的属性进行减少和怎加的时候,不会影响到原来的数据。

实战状况

在vue3中使用一个ref({})对象,{}中有若干属性,笔者需要过滤数据,需要过滤掉一些不用的属性,但是还需要保留原来的数据。

决定从原来的数组(rowdata)中复制一个新对象(newdata),在newdata过滤后传给后端,这样我rowdata中的值就不受相关的影响了,还能将过滤后的数据通过新对象newdata传递给后端。

问题:这个时候就出现了拷贝问题。传递了newdata后,发现rawdata的数据居然也变成了过滤后的数据。这就体现了一个深浅拷贝的问题了。

浅拷贝

//版本一
const newdata.value=rowdata.value
//版本二
const newdata = ref(rowdata.value)

深拷贝

const newdata = JSON.parse(JSON.stringify(rowdata.value));

总结:个人认为这种深浅拷贝出现的原因是为了省内存。

相关推荐

  1. 直接赋值导致响应断开,前端深浅拷贝

    2024-06-09 19:04:03       27 阅读
  2. 关于直接赋值对象导致响应丢失

    2024-06-09 19:04:03       47 阅读
  3. 前端页面直接导出Excel方案

    2024-06-09 19:04:03       58 阅读
  4. 前端深浅拷贝各有哪些方法,优缺点

    2024-06-09 19:04:03       60 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-09 19:04:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-09 19:04:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-09 19:04:03       82 阅读
  4. Python语言-面向对象

    2024-06-09 19:04:03       91 阅读

热门阅读

  1. Rust-10-数据类型

    2024-06-09 19:04:03       26 阅读
  2. cocos入门7:向量点乘的应用举例

    2024-06-09 19:04:03       28 阅读
  3. 记一次Python matplotlib使用ffmpeg和imagemagick错误

    2024-06-09 19:04:03       26 阅读
  4. 代码随想录算法训练营第25天|回溯

    2024-06-09 19:04:03       40 阅读
  5. UE5_加载本地图片(jpg, png) 转 UTexture

    2024-06-09 19:04:03       28 阅读
  6. 详解Selenium 强制等待、隐式等待和显式等待

    2024-06-09 19:04:03       28 阅读
  7. selenium和urllib3版本冲突解决

    2024-06-09 19:04:03       32 阅读
  8. Golang:bytes 格式和解析数字字节值(10K、2M、3G等)

    2024-06-09 19:04:03       26 阅读
  9. WPF 简单页面切换示例

    2024-06-09 19:04:03       25 阅读
  10. wpf、winform 监听USB拔插时触发

    2024-06-09 19:04:03       31 阅读
  11. Vue中的key到底有什

    2024-06-09 19:04:03       25 阅读