希望这是一个简单的问题,我只是在措辞方面遇到了麻烦。 在使用react-router之前:
我的应用程序的结构方式是有一个项目列表,单击一个项目会在我的redux商店中设置selected
状态项。
选择项目后,app会呈现容器组件。这个组件非常复杂,并且有几个其他子容器组件,我使用选择器getSelectedItem(state)
。
现在没问题,但是当切换到react-router
时,现在唯一知道selected
值的组件是获得this.props.params.selected
值的最多父组件。因为selected
不再存储在状态中,它由路由器管理,我是否有必要将selected
值传递给所有子容器组件?我现在会使用像getItem(state, selected)
这样的选择器或其他东西。
希望很清楚,也许我应该一直在线上这个价值?不确定那里的最佳做法。感谢。
答案 0 :(得分:1)
您需要将location / pathname / params明确地作为道具传递给子组件。
react-router
目前提供context.router
,它可以帮助您向前和向后导航,但它不会为您提供当前路线的详细信息。在早期版本中,曾经有context.location
和context.router.getCurrentRoutes
,但它们在v2.0.0-rc4中都已弃用。
更改了上下文导出
只有名为
router
的对象才会添加到上下文中。访问context.history
,context.location
和context.route
全部弃用。访问位置
从您的路线组件的
location
访问this.props.location
。 如果你想在树中更深入,你可以使用任何东西 您的应用程序用于获取高低的道具的约定。一 选项是自己设置上下文
有关详细信息,请参阅changes期间完成的react-router v2.0.0-rc4。