在查看了各种将 redux 与 react-router 结合起来的包之后,看起来 connected-react-router 是最受欢迎的积极支持的选择。
我几乎按照文档中的方式对其进行了配置,但有一个例外情况如下所述。
我遇到的问题是 react-router<Redirect>
会重定向,但不会更新state.router.location
. Codesandbox MNWE 在这里。[编辑:我在发布后意识到<Link>
有完全相同的问题,并通过对原始代码框的轻微修改来说明它。抱歉,如果我刚从那里开始会更清楚,但我需要睡觉!]
在以下示例中,有 3 条路线。第一个匹配根“/”。第二个匹配简单的 URL,如“/anything”,默认匹配“/anything/else”等内容。<Where>
是一个小组件,它显示它的text
prop 然后显示state.router.location.pathname
.
<Switch>
<Route exact path="/">
<Where text="Root" />
</Route>
<Route exact path="/:thing">
<Where text="Exact" />
</Route>
<Route>
<Redirect to="/" />
</Route>
</Switch>
当您到达时,您应该看到“Root: /”。如果您在地址栏中添加“/anything”,您会看到“Exact: /anything”。如果您在地址栏中输入“/anything/else”,地址栏将重定向回根目录,<Switch>
然后返回以匹配根目录,但您看到的不是“根:/”,而是“根:/任何东西” /别的”。记录器确认虽然手动输入的 URL 会触发state
更新,<Redirect>
但不会。
也许我认为它应该是错误的,但我没有看到它以一种或另一种方式记录。我想我犯了一些配置错误?
[我描述的配置异常是我没有combineReducers
在我的应用程序中使用,我有一个我调用的减速器appRootReducer
(在这个例子中是空的)。所以我写了一个小createRootReducer
包装。它运行良好,可以完成基本更新state.router
。]
我希望你能帮忙!