首页 > 系统相关 >vue3 ref 或者reactive被赋值其他对象数据,用的是同一块内存,而不是深拷贝

vue3 ref 或者reactive被赋值其他对象数据,用的是同一块内存,而不是深拷贝

时间:2024-10-20 21:23:32浏览次数:1  
标签:abc abcDemo value reactive vue3 块内存 ref

<template>
  <div class='box'>
    {{ abcDemo?.a?.b?.c }}
    <button @click="changeAbc">Change ABC</button>

    <div>
      {{ abdDemo?.a?.b?.c }}
    </div>
  </div>
</template>
<script lang='ts' setup>
import { ref, reactive, computed, onMounted, nextTick, PropType } from 'vue';

const abc: any = {
  a: {
    b: {
      c: 1
    }
  }
}

const abcDemo = ref<any>({})
const abdDemo = ref<any>({})

abcDemo.value = abc;

function changeAbc() {
  abc.a.b.c = 1;

  // abcDemo 经打印,数值也会跟着变化,说明abc和abcDemo用的是同一块堆内存
  console.log(abcDemo.value, "slfjslkslkfjsdlfsj")

  abc.d = "5"


  console.log(abcDemo.value, "asdasdasdasdasdasdasdasdasdasd")

  //这样赋值,能够使页面更新数值
  abdDemo.value = abc;
}

/* 
  结论是:上面对象虽然用的是同一块内存数据,但是,原对象abc修改的时候不会触发abcDemo ref的响应式,说明vue3不是通过监听数据内存的改变
  来响应式,而是通过直接修改的时候劫持的方式来监听响应式
*/




</script>
<style lang='scss' scoped></style>

结论

ref 或者reactive被赋值其他对象数据,用的是同一块内存,而不是深拷贝

标签:abc,abcDemo,value,reactive,vue3,块内存,ref
From: https://www.cnblogs.com/jocongmin/p/18487923

相关文章

  • vue3.5 测试props解构能不能响应式
    代码测试<template><divclass='box'>demo:{{d}}<div><child:abc='abc'/></div></div></template><scriptlang='ts'setup>import{ref,reactive,comput......
  • vue3 深度响应式是否正常测试,以select options作为例子测试,select options后赋值是否
    <template><divclass='box'><templatev-for="(ditem,dindex)indata1":key="dindex"><el-selectv-model="ditem.value"clearablefilterable><el-optionv-for="ite......
  • vue3+vite5+qiankun结合vite-plugin-qiankun插件,搭建微前端框架
    没有特别的幸运,那么就特别的努力!!!前言涉及到环境npm:9.6.3node:19.9.0node官网地下载址:https://nodejs.org/dist项目框架主应用:vue2微应用1:vue2,qiankun官网API是基于vue2+webpack。微应用2:vue3+vite+ts,目前官网没有vue3示例,需要介入vite-plugin-qiankun插件进行处理......
  • 【Vue】Vue3.0(十三)中标签属性ref(加在普通标签上、加在组件标签上)、局部样式
    上篇文章:【Vue】Vue3.0(十二)、watchEffect和watch的区别及使用......
  • tauri2.0-admin-vue3+element-plus客户端后台管理系统-源码版
    基于Tauriv2+vue3+ElementPlus+Echarts首款重磅桌面端后台管理系统Exe解决方案Tauri2Vue3Admin,正式完结了。趁着周末,录制了一个源码版演示视频。【源码版】tauri2.0+vite5+element-plus中后台管理系统解决方案技术栈编码器:vscode技术框架:tauri2.0+vite5.4.8+vue3.5......
  • vue3 + echarts-wordcloud 绘制词云图表
    词云图,是一种文本数据的视觉展示,由词汇组成类似云的彩色图形。echarts-wordcloud是基于echarts的一个词云库,本篇主要介绍它的使用方法。安装npminstallechartsnpminstallecharts-wordcloud注意echarts-wordcloud@2isforecharts@5echarts-wordcloud@1isforec......
  • Vue3路由
    路由组件通常存放在pages或views文件夹,一般组件通常存放在components文件夹。通过点击导航,视觉效果上“消失”了的路由组件,默认是被卸载掉的,需要的时候再去挂载。1.路由的相关配置1.1路由配置constrouter=createRouter({ history:createWebHistory(), routes:[ ......
  • 如何创建Electron + Vue3项目, 并调用C# dll
    依赖环境当前系统环境为win11,真正上手才知道环境问题才是最大的问题,希望本文能帮你节约时间。本文参考以下资料https://www.electronforge.io/guides/framework-integration/vue-3perplexity.ai和kimi.ai提供其他相关资料nodejs在开发前需要确定你要调用的dll是32位还是64位......
  • 一个基于Vue3开源免费的可快速开发中后台的框架,方便易用,业务没有瓶颈期!(附地址)
    该应用是基于Css媒体查询进行开发,手机、平板、PC均自动适配,增强网站的响应式设计,提高网站的可用性,减少开发成本和维护工作,采用主流技术Vue3、Vite、TypeScript、Gulp、Pinia以及周边的优秀的插件搭建,不用担心自己业务所受框架有限的瓶颈,它方便易用,可通过npm命令安装主程序包,也......
  • Vue3 编写HTTP 请求工具并使用
    编写Http请求首先在vue项目中创建一个api工具包并新建http.js导入axiosimportaxiosfrom'axios';如果没有axios,那么要先下载一个下载axios配置axios默认设置设置了Axios的默认超时时间为5秒。允许跨域请求,通过设置 withCredentials 为 true。设置了POST请......