0

如果我们想在 redux 中以编程方式更改路由,我们曾经使用react-router-reduxnpm 包。然而,它是由其作者存档的。现在推荐的解决方案是connected-react-router

https://www.npmjs.com/package/connected-react-router

但是正如文档在这个包中所说的那样,应该使用它来代替react-router它来使其工作。

通常我使用的是react-router-dom

import { BrowserRouter } from 'react-router-dom';

<BrowserRouter>
   <Route path='/' />
   <Route path='/hey' />
</BrowserRouter>

但正如文档所说,我必须react-router v4/v5ConnectedRouterfrom package 替换:

import { ConnectedRouter } from 'connected-react-router';

<ConnectedRouter history={history}>
   <Route path={'/'} />
   <Route path={'/foo'} />
</ConnectedRouter>

但是这种情况会导致Linkfrom出现问题react-router-domLink必须放在里面BrowserRouter,但我不能使用它,因为没有BrowserRouter,因为文档在说 - “记住删除 BrowserRouter 或 NativeRouter 的任何使用,因为留下它会导致同步状态的问题。”

问题是它ConnectedRouterreact-router, not的连接版本react-router-dom,所以里面没有类似LinkorNavLink的东西。

一定有办法,如果不是我相信这个包在github上不会有3k星......

问:Link在里面怎么用ConnectedRouter?谢谢!

4

1 回答 1

1

我建议你只坚持使用 react-router-dom。

不再需要将其连接到 redux。过去可能有一个原因,因为很难读取当前路径名或搜索参数,因为只有主页组件接收这些作为位置。但是现在你可以在任何地方阅读,这要归功于 withRouter。

您也可以使用历史来推送路线。这在过去也是一件很头疼的事情。

于 2019-06-16T13:39:22.653 回答