自定义组件中减少冗余接口、冗余信息|飞书低代码平台

自定义组件中减少冗余接口、冗余信息|飞书低代码平台

飞书低代码平台手册精选NaN-NaN-NaN
产品功能
案例1:自定义组件中减少接口请求获取冗余信息
如下面代码所示:
  • usePageVar 内部是通过 飞书低代码平台 提供的包获取的页面用户上下文,可以直接拿到用户 email 信息
  • mqlForConvert 是页面上的变量,点击按钮的时候,已经为页面上的 mqlForConvert 变量赋上当前行的数据
  • userService 是用户的接口,会发请求获取用户信息(如下 getUserById)和 mql 信息(getMqlTaskById)
因此,email 信息和页面变量信息,都无需通过单独请求再获取
import { userService } from '@base-web/services/user'; import { usePageVar } from '@base-web/hooks/use-page-var'; import { mqlTaskService } from '@base-web/services/mql-task'; const [userId] = usePageVar<number>('_currentUser'); const [mqlId] = usePageVar<number>('mqlForConvert'); async function open(mqlId: number) { if (!mqlId) { // ... return; } try { setState({ loading: true }); const [user, mqlTaskData] = await Promise.all([ userService.getUserById(userId), mqlTaskService.getMqlTaskById(mqlId), ]); // 数据校验 // ... if (!(mqlTaskData.mql_status === MQLStatus.MQL && mqlTaskData.tm_lead_sync_sf_status === TmLeadSyncSfStatus.Success)) { // ... } setState({ mqlTaskData, currentUserEmail: user._email }); } catch (e) { toast.error('获取数据错误,请稍后重试', errorToastDuration); handleClose(); sendSlardarMessage('获取数据错误'); } finally { // ... } }}
案例2:查询数据,应该按需查询,尽量不使用*
如下面代码所示:
  • 业务函数通过调用业务 Service 查询数据库信息
  • 可以看到,在业务函数里,针对返回的数据,只使用了 id、followPartner、stageName 三个字段
  • 这种情况下,在业务 Service 里查询时,不应该使用 ['*'],而是应该填写这三个字段进行精准查询,减少数据库查询耗时
业务 Service
async getOpportunityById(id) { return (await getRecord({ objectApiName: this.apiName, recordId: `${id}`, fields: ['*'] }))}}
业务函数
export function getCurrentOpportunity(id) { return opportunityService.getOpportunityById(id).then(result => { return { account: result?.id, shareUser: result?.followPartner, stageName: result?.stageName } })}}
大部分情况下,业务 Service 里面的函数,可能会被多个业务函数调用,各业务函数查询条件不同,此时,可以扩展一下业务 Service,支持传入查询条件,或者封装多个业务 Service 函数
先进生产力和业务协同平台
联系我们立即试用

先进团队,先用飞书

欢迎联系我们,飞书效能顾问将为您提供全力支持
分享先进工作方式
输送行业最佳实践
全面协助组织提效
联系我们立即试用