在没有#符号的react-router中从url获取参数

时间:2016-08-11 18:44:27

标签: reactjs react-router

我正在尝试使用我的客户想要的第三方身份验证资源(微信)。这可以通过在其网站上进行身份验证,然后将用户重定向到我们使用“code”参数提供的URL。它不支持在URL的末尾添加/#/。所以我回来了

www.mywebsitedomain.com/code=test123

我正在使用react-router,因此它会自动将其更改为

www.mywebsitedomain.com/code=test123#/?_k=1dcv0i

这样代码就不会出现在props.location或props.params中。

我无法弄清楚如何获取该代码。

任何人都有任何想法?

1 个答案:

答案 0 :(得分:0)

您必须实现一个历史记录组件来处理react-router。

import { useBasename } from 'history'
import createBrowserHistory from 'history/lib/createBrowserHistory';

export default useBasename(createBrowserHistory)({ basename: '/yourUrlBase' });

然后在main / app / index.js

中导入此文件

要更改路线,您需要使用pushState。

history.pushState(null, '/internalUrl/' + urlParameters);

你的路线应该是:

<Route path="internalUrl/:urlParameters" component={YourView} />

此外,您还可以在此链接上找到更多信息和完整的教程:https://css-tricks.com/learning-react-router/#article-header-id-9