【发布时间】:2020-02-03 18:52:37
【问题描述】:
我正在使用 React Router 5。
我有一个路径/item/:id。当我导航到此路径时,我希望能够使用默认哈希标识符加载页面。 i.e. /item/:id#123
有关更多上下文,我的页面上有一个与项目相关联的步骤列表。每次用户选择不同的步骤时,哈希值都会相应更改,如下所示:
step 1 -> /item/123#1
step 2 -> /item/123#2
step 3 -> /item/123#3
这是我的组件代码的粗略实现:
import { withRouter } from 'react-router-dom'
import steps from './steps'
const ItemPage = ({ history, location }) => {
const { hash, pathname } = location
const changeURLhash = idx => {
history.push({ pathname: pathname, hash: idx.toString() })
}
return (
<ul>
{steps.map(step => (
<li key={i} onClick={changeURLhash}>
{step.title}
</li>
))}
</ul>
)
}
我可以在选择一个步骤后更改哈希值,但在初始页面加载时没有点击任何内容但 url 路径中没有哈希值。我需要更改此设置,因为在页面加载时默认选择第 1 步。
最好的方法是什么?提前致谢!
【问题讨论】:
-
我假设这是针对用户在表单上完成某些内容,然后离开然后回来的场景,您希望将进度保存一些正确的方式吗?
-
@ChristopherNgo 没错。用户应该能够在不同的浏览器上复制和粘贴该链接,并显示当前处于活动状态的步骤的相同状态。只需要初始默认哈希选择。
-
我明白了。但是在这种情况下,如何保留前面步骤中的数据呢?
-
@ChristopherNgo 我明白你的意思。步骤的状态作为保存数据的用户类型被持久化。但我使用哈希标识符跟踪的唯一内容是突出显示了哪一步。
标签: reactjs react-router url-routing react-router-dom browser-history