mixinが使用された際のmodifyClassにpluginIdを追加する

警告を解消しようとしています。

[PLUGIN discourse-layouts] エラーを回避するために、`modifyClass` 呼び出しに `pluginId` キーを追加してください。これにより、変更が一度だけ適用されるようになります。

しかし、Layouts プラグインの場合、api.modifyClass() メソッドに Sidebars という Mixin が次のように渡されています。

api.modifyClass(controllerClass, Sidebars) (コードを見る)

次のように Mixin のプロパティに pluginId を追加するなど、多くのことを試しました。

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 が使用されている場合に api.modifyClass()pluginId を追加し、その警告を正常に抑制する方法について、何かアドバイスや考えはありますか?

「いいね!」 5