当前位置: 代码网 > it编程>前端脚本>Vue.js > vue3中的对象时为proxy对象如何获取值(两种方式)

vue3中的对象时为proxy对象如何获取值(两种方式)

2024年05月19日 Vue.js 我要评论
使用vue3.0时,因为底层是使用proxy进行代理的所以当我们打印一些值得时候是proxy代理之后的是proxy对象,proxy对象里边的[[target]]才是真实的对象。第一种获取target值

使用vue3.0时,因为底层是使用proxy进行代理的所以当我们打印一些值得时候是proxy代理之后的是proxy
对象,proxy对象里边的[[target]]才是真实的对象。

第一种获取target值的方式:

通过vue中的响应式对象可使用 toraw() 方法获取原始对象

//第一种获取target值的方式,通过vue中的响应式对象可使用toraw()方法获取原始对象
import { toraw } from '@vue/reactivity'
var list = toraw(store.state.menulist)

或着如下图的引入方式,用

let obj=toraw(props.formallvalue)

第二种获取target值

//第二种获取target值的方式,通过json序列化之后可获取值
json.parse(json.stringify(store.getters.menulist))

ps:vue3中获取proxy包裹的数据

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

在进行 vue3+ts+elementplus 重构vue2项目时遇到了关于proxy的问题

一、具体问题

使用el-upload组件进行图片上传,然后绑定handlechange方法进行图片改变的监听,将上传的图片push到filelist数组中。

const handlechange: uploadprops['onchange'] = (file, filelist1) => {
  //当改变时,将filelist1push到filelist数组,然后用filelist进行之后的处理
  filelist.push(filelist1)
  console.log('测试',filelist)
}

然后声明一个form表单,对数组进行遍历,插入form表单。此时发现问题:filelist是proxy对象

在这里插入图片描述

如图所示,filelist数组被proxy包裹

二、解决办法

查资料了解到:vue3使用proxy代替vue2的object.defineproperty,相当于在对象前设置的“拦截”

可以利用序列化获取,因为这里所取值为数组第一项,所以修改为:

json.parse(json.stringify(filelist))[0]

输出如图

在这里插入图片描述

综上,解决了取出proxy中数据的方法,然后就是对其foreach遍历等操作

到此这篇关于vue3中的对象时为proxy对象如何获取值(两种方式)的文章就介绍到这了,更多相关vue3获取值内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com