页面数据加载

数据组件的“自动模式”属性,默认为“自动加载”,表示打开页面时,自动查询并加载数据。查询数据是一次网络请求。“自动模式”属性设置为“自动新增”和空时,都不会发送请求

需要数据时,加载数据

通常情况下,不是每一个数据组件的数据都需要自动加载的。所以,开发者需要修改数据组件的“自动模式”属性,对于打开页面时,不需要加载数据的数据组件,“自动模式”属性设置为空。这样做可以减少网络请求,加快页面打开速度

不要重复加载数据

数据组件的“自动加载”和“刷新”操作、refreshData 方法一样,都是发送请求查询数据。如果在打开页面时,调用了“刷新”操作、refreshData 方法,就需要把数据组件的“自动模式”属性设置为空。这样做可以减少网络请求,加快页面打开速度

数据加载完,一次性渲染

页面组件的 onPageInitState 事件用于自定义数据初始化逻辑,数据初始化完成,执行界面渲染。在 onPageInitState 事件中发送请求加载数据时,一定要使用 await 等待加载完,当数据全都加载完成后,执行界面渲染。如果在 onPageInitState 事件中数据没有加载完,就执行界面渲染,会出现渲染时,发现数据变化了,又重新渲染,导致重复渲染,表现为页面加载缓慢

正确写法示例如下

    onPageInitState = async (event) => {
        let self = this;
        let subadminManageOrgData = this.comp("subadminManageOrgData");
        let orgTreeData = this.comp("orgTreeData");
        let configData = this.comp("configData");

        let dfd1 = Config.getConfigByPage(this,"entry", "opm-config");
        let dfd2 = subadminManageOrgData.refreshData();
        let res = await Promise.all([dfd1, dfd2]);
        if (res[0].length > 0) {
            var content = res[0][0].content;
            configData.loadData([content]);
            configData.first();
        }
        if (subadminManageOrgData.count() > 0) {
            self.subadminManageOrgIDs = "";
            self.subadminManageOrgFIDs = "";
            subadminManageOrgData.each(function (option) {
                self.subadminManageOrgIDs += option.row.manageOrgID + ",";
                self.subadminManageOrgFIDs += option.row.manageOrgFID + ",";
            });
            orgTreeData.getTreeOption().rootFilter = ["id=in." + self.subadminManageOrgIDs];
        }
        await orgTreeData.refreshData();
    }

results matching ""

    No results matching ""