我们有2个不同的React JS应用程序都部署在代理后面。
代理在根/
位置上提供一个应用程序(简称为首页)。它在子路径上为另一个服务,例如/application-a/
。因此,两者都在同一个域中,例如https://my-site.com/
和https://my-site.com/application-a/
如果我打开2个新的浏览器窗口并将1个直接导航到/
,将另一个直接导航到/application-a/
,则效果很好。
当我可能想在根路径应用程序(主页)中使用HTML a
标记,并使用相对的{{1}将其链接到在/application-a/
子路径下运行的应用程序时,就会出现问题。 }。
在这种情况下,我认为路由器会启动,并希望将其路由到本地应用程序中。我想尝试“逃脱”或“突破”反应路由器。
href
具有href
的{{1}}属性值,则可以正常工作-但不理想,因为它会强制加载新标签页。 target
值使用绝对URL,那么我认为它将“转义” SPA并访问同一选项卡中的新页面。听起来不错-但现在我必须使用绝对URL,这使得代码在dev / staging / live等之间的可移植性降低。_blank
的匹配路由明确放入路由器,并以编程方式更改href
?我可以看到这可能有效,但对我来说却很混乱。没有一种方法可以使用老式的锚标记,并且可能提供某种类型的属性,该属性告诉React Router“让我一个人呆着”,让我的行为像静态HTML /中的“常规”锚一样非SPA /非反应式JS页面。如果没有,则欢迎任何其他建议。
相似的未解决问题:Navigating out of a react-router single page application on the same host
答案 0 :(得分:1)
您可以改用HashRouter吗? https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/api/HashRouter.md URL不会“漂亮”,但应该可以。
或者,如果当前网址与任何路由定义都不匹配,则可以将用户重定向到其他应用,例如:
<Route render={() => (<Redirect to="http:/full-url-to/other-app" />)}/>
在所有其他路由定义之后,因此仅当没有其他路由匹配时才匹配。
关于不同环境(分段,实时,...)之间的可移植性,请考虑您还可以在构建时使用Webpack DefinePlugin设置变量,以便可以动态传递基本URL。