简体中文
detail.render.before
约 593 字大约 2 分钟
2025-12-16
该钩子发生在详情页渲染之前。 渲染对象详情之前执行额外的业务动作
参数
functional用于注册Hook回调函数。执行该Hook时,宿主会向回调函数传入以下参数:
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---|---|---|---|---|
| context | 事件上下文,包含通用参数 | Object | -- | -- |
| plugin | 当前插件运行信息,业务逻辑通常不需要使用 | Object | -- | -- |
| context.data | 详情页解析完成、提交到页面状态之前的数据 | Object | -- | -- |
context.data
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| data | 当前记录解析后的字段数据 | Object | -- |
| describe | 详情页处理后的对象描述 | Object | -- |
| objectDescribeExt | 对象扩展字段描述;接口未下发时可能不存在 | Object | undefined | -- |
| layout | 详情页处理后的布局结构 | Array | -- |
| components | 以组件apiName为key的组件配置 | Object | -- |
| extendData | ID列表等详情页扩展数据 | Object | -- |
| privateProps | 详情页内部状态集合,不建议插件主动修改 | Object | -- |
返回结果
Hook可以返回Object或Promise<Object>。返回对象会与context.data进行顶层浅合并,再提交为详情页状态;未返回结果时沿用原数据。
普通同步回调直接throw时,异常会由PWC适配层捕获并记录,宿主按Hook未返回结果继续处理。当前Detail包装层不会处理Hook返回rejected Promise的情况(包括async回调中抛出异常),会使详情提交流程一直等待。Hook中执行可能失败的异步操作时,应在Hook内部捕获并上报异常,再resolve可用的返回结果。
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---|---|---|---|---|
| data | 覆盖当前记录解析后的字段数据 | Object | -- | -- |
| describe | 覆盖处理后的对象描述 | Object | -- | -- |
| objectDescribeExt | 覆盖对象扩展字段描述 | Object | -- | -- |
| layout | 覆盖处理后的布局结构 | Array | -- | -- |
| components | 覆盖组件配置 | Object | -- | -- |
| extendData | 覆盖详情页扩展数据 | Object | -- | -- |
浅合并只发生在上述顶层。修改嵌套对象中的单个字段时,需要显式保留嵌套对象的其他字段。
基础示例
基础用法:
export default class Plugin {
apply() {
return [{
event: 'detail.render.before',
functional: this.renderBefore.bind(this)
}]
}
renderBefore(context, plugin) {
return Promise.resolve({
data: {
...context.data.data,
field_q1Ibb__c: '插件修改后的值'
}
});
}
}注意事项
1. 详情页刷新也会触发此钩子的执行
