使用react-router和redux容器组件进行线程化params

时间:2016-08-09 08:43:55

标签: reactjs redux react-router

希望这是一个简单的问题,我只是在措辞方面遇到了麻烦。 在使用react-router之前:

我的应用程序的结构方式是有一个项目列表,单击一个项目会在我的redux商店中设置selected状态项。

选择项目后,app会呈现容器组件。这个组件非常复杂,并且有几个其他子容器组件,我使用选择器getSelectedItem(state)

现在没问题,但是当切换到react-router时,现在唯一知道selected值的组件是获得this.props.params.selected值的最多父组件。因为selected不再存储在状态中,它由路由器管理,我是否有必要将selected值传递给所有子容器组件?我现在会使用像getItem(state, selected)这样的选择器或其他东西。

希望很清楚,也许我应该一直在线上这个价值?不确定那里的最佳做法。感谢。

1 个答案:

答案 0 :(得分:1)

您需要将location / pathname / params明确地作为道具传递给子组件。

react-router目前提供context.router,它可以帮助您向前和向后导航,但它不会为您提供当前路线的详细信息。在早期版本中,曾经有context.locationcontext.router.getCurrentRoutes,但它们在v2.0.0-rc4中都已弃用。

  

更改了上下文导出

     

只有名为router的对象才会添加到上下文中。访问context.historycontext.location和   context.route全部弃用。

     

访问位置

     

从您的路线组件的location访问this.props.location。   如果你想在树中更深入,你可以使用任何东西   您的应用程序用于获取高低的道具的约定。一   选项是自己设置上下文

有关详细信息,请参阅changes期间完成的react-router v2.0.0-rc4