Skip to content

页面级实例代码覆盖

这个能力解决一个关键问题:

只改当前页面里某一个实例的代码,不要影响组件库正式版本,也不要影响其它页面。

为什么不用组件新版本

如果用户改了页面里一个按钮实例,然后推成组件库新版本,其它页面引用同组件的人都会受到影响。

页面级 override 更安全:

  • 只绑定当前页面。
  • 只绑定当前 instanceId。
  • 其它页面仍走组件库版本。

数据结构

ts
document.componentOverrides = {
  btn_1: {
    instanceId: 'btn_1',
    baseVersionKey: 'button@v3',
    source,
    contract,
  },
}

stale override

如果实例从 button@v3 升到 button@v4,但 override 仍然基于 button@v3,这个 override 就是 stale。

SDK 不会消费 stale override。宿主 UI 应该提示:

当前实例有一个基于旧版本的代码定制,已暂时停用。 可选择:重新编辑 / 丢弃定制 / 基于当前版本重新创建定制。

MVP 操作

  • 重新编辑:基于当前组件版本重新打开源码编辑器。
  • 丢弃定制:删除 componentOverrides[instanceId]
  • 推为组件库版本:后续能力,需要走组件库发布流程。