vue中为什么对象变成了代理对象?

Bil*_*had 4 javascript vue.js vue-component vuejs3

我遇到的对象问题是,当我将对象分配给数据属性时,它会转换为代理对象。

\n

这就是我正在做的事情

\n
 data() {\n    return {\n      msg: "",\n      notifications: {},\n\n    };\n  },\n  this.notifications =  TokenService.getUserInfo().unread_notifications;\n
Run Code Online (Sandbox Code Playgroud)\n

这就是我接收对象的方式

\n
Proxy {0: {\xe2\x80\xa6}, 1: {\xe2\x80\xa6}, 2: {\xe2\x80\xa6}, 3: {\xe2\x80\xa6}, 4: {\xe2\x80\xa6}}\n[[Handler]]: Object\n[[Target]]: Array(5)\n[[IsRevoked]]: false\n
Run Code Online (Sandbox Code Playgroud)\n

是什么原因?

\n

Mic*_*evý 7

原因是 Vue 3 使用ES6 Proxy来使对象具有响应性。您可以深入研究它是如何工作的,或者您可以忽略它并像平常一样使用对象(代理是透明包装器,并且可以像原始对象一样在任何地方工作)

  • @Mud 只需使用`toRaw()` (6认同)
  • **“代理是透明的包装器,可以像原始对象一样在任何地方工作”**除非它不这样做。例如,Proxy 不能在线程(即 Worker)之间传输,这会让 Vue 很头疼。 (3认同)