这是我之前的配置
import React from 'react'
import { BrowserRouter, Route, Routes } from 'react-router-dom'
import Login from '../views/Login/Login'
import NewsSandBox from '../views/NewsSandBox/NewsSandBox'
export default function indexRouter() {
return (
<div>
<HashRouter>
<Routes>
<Route path="/" element={<NewsSandBox />} exact />
<Route path="/login" element={<Login />} />
</Routes>
</HashRouter>
</div>
)
}
配置之后我发现,路由无论怎样修改展示的都是到 NewsSandBox 组件,在网上查都是让加 exact 属性的,但是我已经加过了,并且并没有什么用。。。
然后大无语事件发生了,经过我不懈的努力,发现我的配置并没有问题,路径跳转失败是因为路径输入错了,使用 HashRouter时 URL 中包含哈希值,以我的项目为例:
正常情况url:http://localhost:3000/login
但使用 HashRouter 创建路由的 url 为:http://localhost:3000/#/login
而且 # 是自己输入的哦!!!!!!
解决办法2:
我使用的 react-router-dom 是 6 版本的,在其官网上,我看到了这样一句话:“HashRouter
除非绝对必要,否则我们强烈建议您不要使用。”
所以也可以改用了 BrowserRouter 组件,然后路由就可以正常使用了。
<BrowserRouter>
<Routes>
<Route path="/" element={<NewsSandBox />} exact />
<Route path="/login" element={<Login />} />
</Routes>
</BrowserRouter>