1

在查看了各种将 redux 与 react-router 结合起来的包之后,看起来 connected-react-router 是最受欢迎的积极支持的选择。

我几乎按照文档中的方式对其进行了配置,但有一个例外情况如下所述。

我遇到的问题是 react-router<Redirect>会重定向,但不会更新state.router.location. Codesandbox MNWE 在这里。[编辑:我在发布后意识到<Link>有完全相同的问题,并通过对原始代码框的轻微修改来说明它。抱歉,如果我刚从那里开始会更清楚,但我需要睡觉!]

在以下示例中,有 3 条路线。第一个匹配根“/”。第二个匹配简单的 URL,如“/anything”,默认匹配“/anything/else”等内容。<Where>是一个小组件,它显示它的textprop 然后显示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。]

我希望你能帮忙!

4

1 回答 1

0

确认!在 Github 存储库中搜索已关闭的问题,我发现我已经离开了我的<BrowswerRouter>标签。

  • 使用您的 react-router v4/v5 路由包装ConnectedRouter并将history对象作为道具传递。请记住删除任何使用 BrowserRouterNativeRouter保留它会 导致 同步状态的问题。
于 2019-06-29T02:13:36.570 回答