【问题标题】:How to reduce memory and get rid of vue reactivity?如何减少内存并摆脱 vue 反应性?
【发布时间】:2021-04-18 16:40:13
【问题描述】:

我有一个问题,Vue's observerreactive 组件在运行时占用了大量内存。例如:Memory allocation on DevTools。 有没有办法分离可观察对象并使对象不反应? 或者也许还有其他东西可以大幅减少内存使用量?

export class Entity {
    public Id: number;
    public Array: EntityArray[] | undefined;
    public CreatedBy: string;
    public CreatedOn: Date;
    public ModifiedBy: string;
    public ModifiedOn: Date;

    constructor(p?: IEntity) {
        this.Id = p ? p.Id : 0;
        this.Array = p && p.Array ? p.Array.map((m: IEntityArray) => new EntityArray(m)) : [];
        this.CreatedBy = p ? p.CreatedBy : '';
        this.CreatedOn = p ? p.CreatedOn : new Date();
        this.ModifiedBy = p ? p.ModifiedBy : '';
        this.ModifiedOn = p ? p.ModifiedOn : new Date();
    }

我在这里初始化Array,它是extended 由另一个实体在Vue 组件的beforeMount() 方法中初始化。我认为这个 Array 对象是实际消耗大量内存的主要问题,因为它可能有数千个项目。 我对整个记忆的想法也可能是错误的。欢迎任何人提供见解和解决方案。谢谢

【问题讨论】:

    标签: javascript vue.js memory-leaks out-of-memory reactive-programming


    【解决方案1】:

    使用 Object.freeze() 冻结您的数组。这将强制 Vue 不使数组反应。

    来源:https://vuejs.org/v2/guide/instance.html#Data-and-Methods

    【讨论】: