如何在hashtag路由器中没有hashtag的路由中做出反应?

时间:2017-12-25 09:16:17

标签: reactjs routing routes react-router

任何时候我用http://localhost:8080/login之类的东西打电话给路由器,react-router编辑路径,并将其重新路由到http://localhost:8080/login#/(无效路由),当我希望它重新路由到{{1}时(有效的路线)。我怎么能这样做?

我已经尝试添加

http://localhost:8080/#/login

到我的webpack.config。我不确定如何找到这些信息。

我的代码: https://pastebin.com/raw/XCvgV6rP

2 个答案:

答案 0 :(得分:1)

要解决您的问题,您只需使用BrowserRouter而不是当前在index.js文件中导入的HashRouter。

HashRouter使用URL的哈希部分(即window.location.hash)使您的UI与URL保持同步,而BrowserRouter使用HTML5历史API(pushState,replaceState和popstate事件)来保持您的UI与网址同步。

来源: HashRouter BrowserRouter

答案 1 :(得分:0)

当您在浏览器的URL栏中输入http://localhost:8080/login时,按Enter后,浏览器会将您移至login,然后哈希路由器添加他的斜杠,最后将其设为/login#/。如果您使用Linkhistory.push,那么HashRouter将重定向就好了。使用HashRouter,您本身没有/login

看看@Marco答案,可能你会使用BrowserRouter  无论如何要摆脱那些讨厌的混乱。