vuejs3 - vue3:如何使外部对象的一个属性具有反应性?
问题描述
长期以来,我一直在寻找一个优雅的解决方案来解决这个问题。
MyClass.js
class MyClass {
// public
isReady = false
isLoading = false
isProcessing = false
// private
__source
__buffer
#otherPrivateVar
// a lot of other stuff ...
}
我只想使一些实例属性具有反应性并在组件中使用它们。
在Vue2我使用私有类属性
MyClass
// few public vars
isReady = false
// all other is private to hide it from vue reactivity
#source
#buffer
}
并在这样的组件中使用它
<template>
...
<div v-if="myVariable.isReady">Ready to go</div>
<div>wait a second ...</div>
...
</template>
export default {
// ...
data () {
return {
myVariable: new MyClass()
}
}
// ...
}
我不确定这是否是一个好的解决方案,但它适用于Vue2。在Vue3 中我不能这样做,因为它使用了代理并且我得到了错误:
AudioFile.js:131 TypeError: attempted to set private field on non-instance
at _classPrivateFieldSet (classPrivateFieldSet.js:7)
那么当我的对象在 Vue 3 中发生变化时(不使用回调或使整个对象在没有私有属性的情况下具有响应性)时,最好的反应方式是什么?
解决方案
推荐阅读
- .net - Lucene.net 不返回搜索结果
- matlab - 包含文件路径的代码中的 MATLAB 换行
- node.js - 与所有包共享根 package.json 中的工具
- hash - 自定义哈希函数
- sails.js - https 在sailsjs的localhost中不起作用
- php - 在 codeigniter 中是否有任何方法可以检查 ( $this->db->group_start(); ) 即组是否已经启动。或任何这样做的技巧
- php - 使用 PHP ODBC 驱动程序查询 Pervasive Database PSQL
- node.js - Node.js 中的 SQL Server:查询在服务器上工作,但不能通过 Node.js 驱动程序
- javascript - 捕捉到多个图层上的要素
- python - 循环遍历列表及其以逗号分隔的子字符串