ReactJS:防止 href 替换 URL 哈希值(令牌)
ReactJS: Preventing href from replacing URL hash value(token)
嗯,这很尴尬...坦率地说,我一直无法理解这个看似简单的解决方案。基本上,网络应用程序在从 Spotify API 登录身份验证后生成一个访问令牌和一个刷新令牌,它本身工作得很好并生成这个:
localhost:3000/#access_token=BQCs..&refresh_token=AQCc...
但是,我有一个按钮,即
<Button href="#main1"> Foo? </Button>
一旦按下它就会进入页面的一部分,并替换 URL 中的标记,因此当刷新页面时,不会读取必要的标记,因此,如果没有,端点将无法运行它。
我尝试了以下方法,例如:
- 实施由 onClick() 处理程序触发的
event.preventDefault()
- react-scrollable-anchor 与
goToAnchor('section1', false)
- 一个布尔值,即
loggedIn: token ? true : false
如果检测到标记,它有条件地呈现组件,如果有 none ,则 window.location='localhost:3000/#access_token=' + access + '&refresh_token=' + refresh
- react router 与
<Link to={params.access_token}>
不幸的是,由于其完全删除 URL 散列的性质,前两种方法具有相似的初始结果,因此它会留下:
localhost:3000
另一方面,最后两个只是在刷新页面后给出未定义的标记值,这意味着即使在初始加载后标记也不会被存储。
解决这个问题的最佳方法是什么?如何有效地将访问令牌保存在 URL 哈希中?
一如既往,我们非常感谢任何帮助和建议。谢谢。
终于找到了一种方法来访问某个组件,而无需在锚定 href and/or 更改 url 哈希时遇到任何麻烦:
https://www.npmjs.com/package/react-scroll
请注意,这种方法仅适用于单页网络应用程序。它基本上允许您从一个组件平稳地跳到另一个组件。我也研究了 React-Spring 但在摆弄了一整天后它对我没有用,另一方面,react-scroll 为我做了这个把戏。
嗯,这很尴尬...坦率地说,我一直无法理解这个看似简单的解决方案。基本上,网络应用程序在从 Spotify API 登录身份验证后生成一个访问令牌和一个刷新令牌,它本身工作得很好并生成这个:
localhost:3000/#access_token=BQCs..&refresh_token=AQCc...
但是,我有一个按钮,即
<Button href="#main1"> Foo? </Button>
一旦按下它就会进入页面的一部分,并替换 URL 中的标记,因此当刷新页面时,不会读取必要的标记,因此,如果没有,端点将无法运行它。
我尝试了以下方法,例如:
- 实施由 onClick() 处理程序触发的
event.preventDefault()
- react-scrollable-anchor 与
goToAnchor('section1', false)
- 一个布尔值,即
loggedIn: token ? true : false
如果检测到标记,它有条件地呈现组件,如果有 none ,则 - react router 与
<Link to={params.access_token}>
window.location='localhost:3000/#access_token=' + access + '&refresh_token=' + refresh
不幸的是,由于其完全删除 URL 散列的性质,前两种方法具有相似的初始结果,因此它会留下:
localhost:3000
另一方面,最后两个只是在刷新页面后给出未定义的标记值,这意味着即使在初始加载后标记也不会被存储。
解决这个问题的最佳方法是什么?如何有效地将访问令牌保存在 URL 哈希中? 一如既往,我们非常感谢任何帮助和建议。谢谢。
终于找到了一种方法来访问某个组件,而无需在锚定 href and/or 更改 url 哈希时遇到任何麻烦: https://www.npmjs.com/package/react-scroll
请注意,这种方法仅适用于单页网络应用程序。它基本上允许您从一个组件平稳地跳到另一个组件。我也研究了 React-Spring 但在摆弄了一整天后它对我没有用,另一方面,react-scroll 为我做了这个把戏。