我无法使客户端路由正常工作(使用react-router-dom@5.2.0)
我有一个<Application>
组件,它返回:
<BrowserRouter>
<Switch>
<Route path="/:filter/:id">
<Something...>
</Route>
<Route path="/">
<SomethingElse...>
</Route>
</Switch>
</BrowserRouter>
每当我导航到[localhost]/rating/good
时,事情就会按预期进行:匹配正确的路线(即"/:filter/:id"
)并呈现<Something>
组件。
我有一个按钮可以清除我所说的过滤器;每当我点击它时:
useHistory().push('/')
更新URL <Application>
组件的更新,这又意味着<BrowserRouter>
和<Route>
的更新。那是我观察到意想不到的事情的时候:
尽管当前URL路径名为path="/:filter/:id"
,但仍匹配与之前相同的路由(即<Something>
)并呈现了"/"
组件。
这是预期的行为吗?
如果是,如果不是当前window.location,则react-router用什么来匹配路由?
现在,我将<Application>
更新为:
const location = { ...useLocation(), pathname: window.location.pathname }
并像这样传递location
对象:
<Switch location={location}>
但是感觉好像我做错了,它应该工作而无需我摆弄位置对象。
感谢任何提示!