版本 -

“ react 路由器”:“5.0.0”,
“ react 路由器-dom”:“5.0.0”

在我的应用程序容器组件中,我使用 withRouter 来访问位置和历史 Prop 。我用它就像 -

export default withRouter(connect(mapStateToProps)(AppContainerComponent));

结果是,我得到一个空白页。没有错误,只是一个空白页。

如果我删除 withRouter HOC,它就可以工作。

此外,它曾经适用于 v4.0.0-beta.8。

我将 withRouter 导入为 -
import { withRouter } from 'react-router';

不确定是什么问题。

注意 - 我已经阅读了 this link,它讨论了 shouldCOmponentUpdate 方法如何不考虑上下文更改(react-router 现在使用的),并且它建议使用 'withRouter' HOC 包装组件,但它本身不起作用为我。

更新 -

以下是我正在使用的路线路径 -

index.js -
<Provider store={store}>
      <BrowserRouter>
        <AppContainerComponent />
      </BrowserRouter>
    </Provider>

appcontainer.component(它的 redux 连接)呈现以下组件 -
<AppRoutes isAuthenticated={isAuthenticated} />

appRoutes.component.ts - 此组件呈现“UnauthenticatedRoute”和“AuthenticatedRoute”自定义 HOC,例如 -
<UnauthenticatedRoute
      path="/"
      exact
      component={SignupComponent}
      isAuthenticated={isAuthenticated} />

<AuthenticatedRoute
      path="/app"
      exact
      component={AppComponent}
      isAuthenticated={isAuthenticated} />

如果用户已成功通过身份验证,'UnauthenticatedRoute' 和 'AuthenticatedRoute' HOC 将呈现传递的组件,否则它将使用 react-router 的 重定向 组件重定向到 '/signup' 路径。

AppComponent 有一堆由 Route 组件定义的路由 -
<Route exact
       path="/path1"
       render={}
/>

另一个更新——

遇到 this link,它准确地谈到了我面临的问题,但解决方案是使用 withRouter。也许我没有从正确的位置进口东西? Something similar here

我正在将 react-router 和 react-router-dom 与 preact (8.4.2)preact-cli (v2.2.1)preact-compact (3.18.4) 一起使用。我不确定这是否是根本原因? react 路由器不是开箱即用的支持 preact 吗?

我已经设置了 this link 来演示这个问题。(issue_example 分支)

最佳答案

尝试用你的 withRouter 包装 AppContainer 组件,像这样:

export default connect(mapStateToProps)(withRouter(AppContainerComponent));

关于reactjs - withRouter with connect 在 v5.0.0 中不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56017523/

10-13 00:23