添加pluginId以在mixin被使用时修改类

我正在尝试消除警告:

[PLUGIN discourse-layouts] 为防止测试出错,请在 `modifyClass` 调用中添加 `pluginId` 键。这将确保修改只应用一次。

但是,在 Layouts 插件的情况下,有一个名为 Sidebars 的 Mixin 被传递给 api.modifyClass() 方法,如下所示:

api.modifyClass(controllerClass, Sidebars) (查看代码)

我尝试了许多方法,包括将 pluginId 添加到 Mixin 的属性上:

export default Mixin.create({
  pluginId: 'discourse-layouts',
  router: service(),
  path: alias("router._router.currentPath"),
  ...
});

但是警告仍然出现。

我唯一能够抑制警告的方法是改用此代码而不是 modifyClass()

 const klass = api._resolveClass(controllerClass, {});
 klass.class.reopen(Sidebars);

但是,我觉得这不是最好的方法,因为我实际上跳过了有助于防止 modifyClass 被反复应用的检查。

大家有什么建议或想法,如何在使用 mixin 时将 pluginId 添加到 api.modifyClass() 中并成功抑制该警告吗?

5 个赞