页面数据加载
数据组件的“自动模式”属性,默认为“自动加载”,表示打开页面时,自动查询并加载数据。查询数据是一次网络请求。“自动模式”属性设置为“自动新增”和空时,都不会发送请求
需要数据时,加载数据
通常情况下,不是每一个数据组件的数据都需要自动加载的。所以,开发者需要修改数据组件的“自动模式”属性,对于打开页面时,不需要加载数据的数据组件,“自动模式”属性设置为空。这样做可以减少网络请求,加快页面打开速度
不要重复加载数据
数据组件的“自动加载”和“刷新”操作、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();
}