You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue子组件向父组件传递ref对象时去除Proxy包装

去除Vue响应式Proxy包装的几种方法

因为Vue 3的响应式系统基于Proxy实现,你通过skuForm.value获取的对象依然是被Proxy包裹的响应式对象,所以父组件接收后还是Proxy。可以用以下几种方式转换成普通JSON对象:

方法1:JSON序列化反序列化

这是最通用的方法,不管对象结构是否嵌套都能生效,缺点是无法处理函数、Symbol等JSON不支持的类型:

const addSku = () => {
    // 先转成JSON字符串再解析,得到普通对象
    const plainSku = JSON.parse(JSON.stringify(skuForm.value));
    emit('add', plainSku);
}

方法2:使用Vue的toRaw函数

Vue官方提供的toRaw方法可以直接获取响应式对象的原始对象,不会破坏原响应式对象:

import { toRaw } from 'vue';

const addSku = () => {
    const plainSku = toRaw(skuForm.value);
    emit('add', plainSku);
}

方法3:对象解构赋值(适合扁平结构)

如果你的skuForm是扁平结构(没有嵌套对象),可以通过解构生成新的普通对象:

const addSku = () => {
    const plainSku = { ...skuForm.value };
    emit('add', plainSku);
}

注意:如果对象里有嵌套的响应式对象,解构后嵌套部分依然是Proxy,这种情况不适合用这个方法。

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 04:34:56