如何从位置计算参数。我使用redux并重新选择。我以前在一些选择器中访问router.params。现在我只能访问routing.location。
我试图在react-router中找到一个帮助函数,但我还没有找到它。
感谢您的帮助!
答案 0 :(得分:0)
不幸的是,路由器难以使用。就个人而言,我做了以下解决方法:
在主路径组件(App)中<Route path="/" component={App} />
定义了两种方法:
constructor(props) {
super(props);
globalModel.router.set(props);
}
componentWillReceiveProps(nextProps) {
globalModel.router.set(nextProps);
}
所以我在globalModel中有当前的路由器道具(可能是助焊剂存储)。
答案 1 :(得分:0)
路由器与Redux无关,也无法为您提供state.router.params
之类的内容。
您可能会误用其中一个社区软件包,例如redux-router,您仍然可以使用它。您可能切换到更稳定的react-router-redux,但有目的地不允许您访问来自州的路由参数。两个图书馆都在各自的自述文件中解释了它们之间的差异,因此我鼓励您阅读最适合您需求的文章。
您不必使用其中任何一个库!
一般情况下,我们建议您在路由处理程序组件中使用从路由器本身收到的道具。确保它已连接,并使用mapStateToProps
的第二个参数来阅读路线参数:
function mapStateToProps(state, ownProps) {
const id = ownProps.params.id
return {
post: state.posts[id]
}
}
同样,在选择器本身定义第二个props
参数时,可以使用Reselect访问道具。重新选择自述文件describes this use case。从技术上讲,你仍然会从你的组件传递params,但你的选择器可以通过这种方式访问它们。