首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VueJS禁用特定属性的反应性

VueJS禁用特定属性的反应性
EN

Stack Overflow用户
提问于 2019-02-27 21:33:25
回答 3查看 4.8K关注 0票数 8

我正在使用这个地理库和一些对象,比如Map、Layer和LayerTree。我正在使用Vue来可视化LayerTree。

然而,今天我注意到一些层包含了很多(超过10,000)项,它们都变成了反应性的,这完全爆炸了内存使用量。我不需要这样做,因为我只对显示layerTree的层的几个属性感兴趣。

是否可以将某些属性声明为非反应性?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-27 22:13:07

在data方法返回的内容之外定义的任何内容都是非反应性的。在指南中没有关于这一点的官方信息,但到目前为止,它是有效的。

代码语言:javascript
复制
...,
data() {
    // Nonreactive
    this.fuu = 'nonreactive'
    // Reactive
    return {
       bar: 'reactive',
    }
},
...
票数 11
EN

Stack Overflow用户

发布于 2020-06-04 11:38:19

我遇到了同样的问题。我注意到当使用VueJs和另一个带有笨重对象的库-> BabylonJs (3D渲染引擎)时,性能会有相当大的下降。在大型和流体对象上注入反应性吸气剂和凝固剂,例如巴比伦3D对象,会产生明显的膨胀,并导致FPS性能受到影响。

在实践中,您可能不需要大型对象是反应性的。Vue应该只用于在DOM上呈现内容。

由于上述原因,我创建了一个vue的叉子,称为vue- For -babylonians。请查看here

使用它,您可以告诉Vue不要使存储在vue或vuex中的任何对象成为反应性对象。您还可以告诉Vue使对象属性的某些子集具有响应性。您会发现性能有了很大的提高,并且您可以像在vue中一样享受存储和传递大对象的便利。

票数 1
EN

Stack Overflow用户

发布于 2021-11-17 17:56:16

你也可以用Object.freeze冻结对象,它不会变成反应性的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54906710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档