Hashrouter 没有斜线与react-router-dom v6

2024-04-12

我想在我的路径中添加一个不带斜杠的哈希,例如:/#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(使用前将#替换为@)

Hashrouter 没有斜线与react-router-dom v6 的相关文章

随机推荐