首页 > 解决方案 > 在哪里存储多个 vue 组件使用的非常大的“blob”对象

问题描述

当我commit()在 vuex 存储中访问一个大对象(机器学习模型;大量浮点数,大约 20MB 作为压缩的 msp 文件)时,我会_traverse()因“在可能的内存不足崩溃之前暂停”而停止。

我将它放在 vuex 中,因为它会被层次结构中相当深的组件使用,并且可能被多个组件使用。因为它总是与其他数据一起使用,所以我把它放在同一个 vuex 存储中。

我有哪些选择?有没有办法在 vuex 中保留一些东西,但说把它当作一个“blob”,而不是在每个数组元素上添加观察者?它有时被更新,但如果是这样,它总是会被替换。

如果没有,到目前为止我最好的想法是将它放在一个global变量中。我我什至可以编写一个 vuex getter 来访问该全局变量——不需要从state那里读取 vuex getter 吗?(我什至可以在状态中有一个“updateCnt”变量,所以事情的反应性方面仍然有效?)

但是,这是一个大型复杂项目,使用全局会带来代码异味,所以我想确保我不会错过更好的解决方案。

按要求编辑:不重复限制 vue/vuex 反应性(尽管那里的答案很有用)(还有我如何防止 Vuex 干扰我的类实例?),因为这里的重点是什么是最好的解决方案(拥有访问,有时会在多个 vue 组件中更改的大数据),而不是“我如何让它与 vuex 一起工作”。(此外,Object.freeze() 解决方案只工作了一半:添加到状态工作,但 vue 浏览器工具最终崩溃。)

标签: vue.jsvue-componentvuex

解决方案


推荐阅读