数据集组件写入速度优化

场景描述

在大量使用setValue将数据写入数据集组件时,由于频繁更新状态树,导致代码执行缓慢,可能出现浏览器无响应,优化后运行正常

实现思路

引入transaction,在transaction中执行setValue,在transaction执行后更新一次状态树,大大提高执行效率

实现步骤

1 引入transaction

import {transaction} from "$UI/wxsys/lib/mobx/mobx-2.6.2.umd";

2 在赋值代码外层使用transaction方法

transaction(()=>{
})

例如:UI2/mobile/work.js中的insertFunctions方法,增加了transaction,代码如下:

insertFunctions(event){
    transaction(()=>{
        var funcArr = event.data.data;
        var self = this;
        if (funcArr.length > 0) {
            funcArr.forEach(function(func) {
            //添加菜单目录
                if(!func.hidden || func.hidden!="all"){    
                    self.comp("funcDirData").newData();
                    self.comp("funcDirData").setValue("title",func.title);
                    self.processFuncTree(func.children);
                }
            })
        }
        //删除空目录
        var self = this;
        var delRows = [];
        this.comp("funcDirData").each(function(options){
            var rowid = options.row.fid;
            var rows = self.comp("funcMenuData").find(["dirID"],[rowid]);
            if(rows.length == 0)
                delRows.push(options.row);
        });
        if(delRows.length > 0){
            this.comp("funcDirData").deleteData(delRows);
        }
    })  
}

results matching ""

    No results matching ""

    results matching ""

      No results matching ""