用另一种方法扩展 JavaScript (Vuejs3) 代理
Extend JavaScript (Vuejs3) proxies with another method
Vue3 使用代理来包装对象数据属性。
我有几个这样的对象,我想在其中为代理本身添加额外的功能,即在某些情况下监视 get
。有没有办法扩展 Vue 创建的 proxy
对象,或者是否为时已晚,因为在创建 proxy
对象时必须在回调中传递所有这些功能?
如果可能的话,我想避免将一个代理包装在另一个代理中。
更新
我确实尝试过将我的对象包装在代理中。当 Vue 添加它的代理时,这导致了非常糟糕的事情发生,包括一些我仍然不确定是否应该可行的事情 - 在调试器中单步执行每一行,一旦一行试图访问数据 属性 当前 运行 函数将不再是 运行。没有错误,没有冻结应用程序,甚至没有警告级别的消息。应用程序根本无法通过当前函数中的那一行。
我也有类似的需求。我有自己的代理,但问题是它们没有反应,并且不会监视对基础目标的任何更改。我设法通过以下方式使我的代理具有反应性:
const target = {}
const reactiveProxy = reactive( new Proxy( reactive(target), { /*...*/ }) )
希望这也适用于您的用例。
Vue3 使用代理来包装对象数据属性。
我有几个这样的对象,我想在其中为代理本身添加额外的功能,即在某些情况下监视 get
。有没有办法扩展 Vue 创建的 proxy
对象,或者是否为时已晚,因为在创建 proxy
对象时必须在回调中传递所有这些功能?
如果可能的话,我想避免将一个代理包装在另一个代理中。
更新
我确实尝试过将我的对象包装在代理中。当 Vue 添加它的代理时,这导致了非常糟糕的事情发生,包括一些我仍然不确定是否应该可行的事情 - 在调试器中单步执行每一行,一旦一行试图访问数据 属性 当前 运行 函数将不再是 运行。没有错误,没有冻结应用程序,甚至没有警告级别的消息。应用程序根本无法通过当前函数中的那一行。
我也有类似的需求。我有自己的代理,但问题是它们没有反应,并且不会监视对基础目标的任何更改。我设法通过以下方式使我的代理具有反应性:
const target = {}
const reactiveProxy = reactive( new Proxy( reactive(target), { /*...*/ }) )
希望这也适用于您的用例。