以编程方式自定义侧边栏

您可以查看 chat-plugin 如何与侧边栏集成:

在这种情况下,链接的状态保存在服务对象中,并且每当状态更改时,侧边栏都会更新:

一个潜在的解决方案是订阅页面更改事件并更新链接。伪代码可能看起来像:

import { tracked } from "@glimmer/tracking";

api.addSidebarSection(
  (BaseCustomSidebarSection, BaseCustomSidebarSectionLink) => {
    const TestSectionLink = class extends BaseCustomSidebarSectionLink {
      //在此处定义您的自定义链接属性
    };

    const SidebarTestSection = class extends BaseCustomSidebarSection {
      @tracked links = [];

      constructor() {
        super(...arguments);

        this.#updateLinks();
        this.onAppEvent("page:changed", () => this.#updateLinks());
      }

      get newLinksArray() {
        //基于当前URL的链接列表
      }

      #updateLinks() {
        this.links = this.newLinksArray.map(
          (link) =>
            new TestSectionLink({
              link,
            })
        );
      }

      get sectionLinks() {
        return this.links;
      }
    };
    return SidebarTestSection;
  }
);