我想在我的路径中添加一个不带斜杠的哈希,例如:/#store/flowers/price
但因为我没有使用反应路由器 DOM v5不再,v6不让我工作<HashRouter hashType='noslash'>
My code:
import React from 'react'
import { HashRouter, Routes, Route } from 'react-router-dom'
import FlowersPrice from './views/Store/Flowers/FlowersPrice'
return (
<>
<HashRouter>
<Routes>
<Route path={'/store/flowers/price'} element={<FlowersPrice />} />
</Routes>
</HashRouter>
</>
)
}
export default App
这仅适用于/#/store/flowers/price
我仍然想删除斜线/#/store
我的react-router-dom版本:“react-router-dom”:“^6.2.2”
看来这已经不可能了。
对于那些希望使他们的项目与旧 URL 兼容的人,您可以强制更新任何缺少前导“/”的哈希值。这不是最优雅的解决方案,但它为我解决了这个问题。
将其添加到您的 index.js 条目文件中:
const forceSlashAfterHash = () => {
let _hash = window.location.hash;
if (_hash[1] && _hash[1] != '/') {
window.location.href = window.location.origin + window.location.pathname + window.location.search + "#/" + _hash.slice(1);
}
}
forceSlashAfterHash();
window.addEventListener('hashchange', forceSlashAfterHash);
当页面加载或哈希更改时,它会检查哈希中是否有前导“/”,如果不存在,则添加一个。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)