在我的 React 应用程序中,从 Home 导航到子页面然后点击后退按钮后,React<Router>
在其内部状态中显示与其传递的道具不匹配的位置,并且地址栏中当前显示的 URL 显示history
不正确<Route>
do的内容发生了<Route>
变化;数据由位置更改 Redux 操作更新。显示<Route>
显示新数据,但它是错误的<Route>
。
该应用程序的基本结构是:
<Root> (custom)
<Provider> (react-redux)
<ConnectedRouter> (connected-react-router)
<App> (custom)
<Switch> (react-router-dom)
<Route path="/" exact /> (react-router-dom)
<Route path="/quality:q" /> (react-router-dom)
最初我们导航到根目录并<Route path="/>
正确显示。我们点击一个链接,正确地把我们带到<Route path="/quality/:q" />
. 从那里我们回击浏览器,URL 更改为/
但<Route path="/quality:q" />
仍显示,但它不应该再显示了。
Redux devtools 显示了这个渲染树,我包含了一些我们明确使用的关键组件。
<Root> (custom)
<Provider> (react-redux)
<ConnectedRouter> (connected-react-router)
<Router> (injected)
<Context.Provider> (injected)
<App> (custom)
<Switch> (react-router-dom)
<Route path="/" exact /> (react-router-dom)
<Route path="/quality:q" /> (react-router-dom)
当处于这种不正确的状态时,一切<ConnectedRouter>
都是正确的。<ConnectedRouter>
有一个单一的道具,history
它具有正确的位置,即根。
紧接其<Router>
下方的是不匹配的。它有一个可以的history
道具,但它的location
状态陈旧,显示旧网址。
当错误的位置数据被上下文传递给<Route>
s 时,他们会从他们的location
prop 中检查匹配的<Router>
陈旧状态的路径。结果,<Route>
呈现错误。
我无法弄清楚我做了什么导致这种不匹配。这都是简单的路线,并<Link>
为从主页到子页面和返回的所有链接使用组件。
有没有人以前见过这个和/或可以指出我如何解决这个问题的方向?