如何使用React Router 5模拟window.location?

时间:2020-08-27 09:26:17

标签: reactjs react-router react-router-dom react-router-v5

我有Laravel提供的React SPA。 我希望SPA能够转到Laravel也提供服务的某些页面。

更新:

作为一个例子... 在我基于coreui-react的应用程序中。.我想允许用户打开使用vuepress构建的用户手册。我希望能够在全新的页面中打开它,而不要将其捆绑到SPA中。 SPA显示在https://test.local/,用户手册显示在https://test.local/docs

链接到=“ / docs”会使我回到SPA,也链接到=“ // test.local / docs”

我也尝试过将onClick = {()=> window.location = window.location.protocol +“ //” + window.location.hostname +“ / docs”}放在链接中,但是除了那没有其他变化它确实从本地开发服务器(端口3000)中退出。但是,如果它在构建中-那么它仍然会被ReactRouter捕获

有人建议StaticRouter可以这样做-但我看到的所有示例都涉及SPA将消耗的服务器端内容呈现,而不是使您跳到服务器交付的页面。

我有点机智..我目前唯一的想法是将SPA从“ /”移动到“ / app”,而不在SPA内完全不处理“ /”,希望ReactRouter可能会让它通过

这似乎是ReactRouter中的一个长期问题。但是过去,您可以使用

1 个答案:

答案 0 :(得分:0)

如果我理解正确, 您可以使用“历史记录”:

const history = useHistory();

您必须从useHistory导入react-router-dom

import { useHistory } from 'react-router-dom'

然后您可以使用:

history.push('/analytics')