【问题标题】:Is this normal behavior? single-spa activeWhen这是正常行为吗?单spa activeWhen
【发布时间】:2021-07-29 12:58:08
【问题描述】:

activeWhen 正在监听 url

我们有 A B C 应用程序,我们的 url 结构必须是主机名/A/B/C 如果我只想显示 C 微应用,activeWhen("hostname/A/B/C") 但 A 和 B 的所有父应用程序也会出现..
无论如何都可以解决(不更改 url 结构)。
以及为什么它会加载所有父应用程序。不是active什么时候需要匹配而不是部分匹配?

另一个问题,如何像 single-spa-inspector 一样强制加载应用程序

感谢您的调查

【问题讨论】:

    标签: single-spa single-spa-angular


    【解决方案1】:

    是的,有一个解决方法。

    当您将字符串传递给 activeWhen 数组时,它将在 URL 以该字符串开头时匹配。因此,具有activeWhen: ['/a']activeWhen: ['/a/b'] 的父应用也将匹配主机名/A/B/C。这对嵌套路由很有帮助。

    如果您只想在路径名完全等于字符串时进行匹配,您可以将函数添加到 activeWhen 数组而不是字符串。 activeWhen 数组中的函数将接收window.location 作为参数。

    示例:

    singleSpa.registerApplication({
      name: 'a',
      app: () => import('src/a.js'),
      activeWhen: [(location) => location.pathname === '/a'] // will only match '/a' exactly
    });
    
    singleSpa.registerApplication({
      name: 'b',
      app: () => import('src/b.js'),
      activeWhen: [(location) => location.pathname === '/b'] // will only match '/b' exactly
    });
    
    singleSpa.registerApplication({
      name: 'c',
      app: () => import('src/c.js'),
      activeWhen: [(location) => location.pathname === '/a/b/c'] // will only match '/a/b/c' exactly
    });

    【讨论】:

      猜你喜欢
      • 2011-07-17
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多