简体中文
detail.parse.before
约 680 字大约 2 分钟
2025-12-16
该钩子发生在详情页处理数据之前。 渲染对象详情之前处理或者修改详情页数据
参数
functional用于注册Hook回调函数。执行该Hook时,宿主会向回调函数传入以下参数:
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---|---|---|---|---|
| context | 事件上下文,包含通用参数 | Object | -- | -- |
| plugin | 当前插件运行信息,业务逻辑通常不需要使用 | Object | -- | -- |
| context.data | 接口下发、尚未经过详情页解析的完整数据 | Object | -- | -- |
context.data
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| data | 当前记录的原始字段数据 | Object | -- |
| describe | 当前对象的原始对象描述 | Object | -- |
| objectDescribeExt | 当前对象的扩展字段描述;接口未下发时可能不存在 | Object | undefined | -- |
| layout | 详情页原始布局和组件配置 | Object | -- |
除上述稳定字段外,context.data还可能包含审批、流程或业务扩展字段。返回修改结果时应保留不需要修改的原有数据。
返回结果
Hook可以返回Object或Promise<Object>。返回对象会与context.data进行顶层浅合并,再进入详情页解析流程;未返回结果时沿用原数据。
普通同步回调直接throw时,异常会由PWC适配层捕获并记录,宿主按Hook未返回结果继续处理。当前Detail包装层不会处理Hook返回rejected Promise的情况(包括async回调中抛出异常),会使详情解析流程一直等待。Hook中执行可能失败的异步操作时,应在Hook内部捕获并上报异常,再resolve可用的返回结果。
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---|---|---|---|---|
| data | 覆盖当前记录的原始字段数据;修改单个字段时需保留原字段 | Object | -- | -- |
| describe | 覆盖原始对象描述 | Object | -- | -- |
| objectDescribeExt | 覆盖对象扩展描述 | Object | -- | -- |
| layout | 覆盖原始布局和组件配置 | Object | -- | -- |
| miniSide | 右侧区域是否默认收起;未返回时沿用用户本地缓存 | Boolean | -- | -- |
| tabsMemoryTab | 页签是否记忆上次选中项;未返回时为true | Boolean | -- | true |
基础示例
基础用法:
export default class Plugin {
apply() {
return [{
event: 'detail.parse.before',
functional: this.renderBefore.bind(this)
}]
}
renderBefore(context, plugin) {
return Promise.resolve({
data: {
...context.data.data,
name: '插件修改后的名称'
}
});
}
}页签是否支持记忆
export default class Plugin {
apply() {
return [{
event: 'detail.parse.before',
functional: this.renderBefore.bind(this)
}]
}
renderBefore(context, plugin) {
return Promise.resolve({
tabsMemoryTab: false // true记忆,false不记忆,默认true
});
}
}右侧区域是否支持默认收起
export default class Plugin {
apply() {
return [{
event: 'detail.parse.before',
functional: this.renderBefore.bind(this)
}]
}
renderBefore(context, plugin) {
return Promise.resolve({
miniSide: false // true收起,false展开,默认走本地缓存数据
});
}
}注意事项
1. 详情页刷新也会触发此钩子的执行
