我想知道如何从mapStateToProps或任何此类选择器中访问react-router匹配对象的参数。我想从参数中构建一些东西,并将其作为道具传递给选择器中的表示性组件。我有一个接受built
道具的组件,我希望传递给它一些从react router参数派生的值。我最好不希望将params传递为道具。
答案 0 :(得分:0)
mapStateToProps
需要second parameter ownProps
。通过react-router
初始化组件后,您将获得match
道具。
<Route path="/details/:id" component={DetailsPage}
然后
function DetailsPageComp(props) {
...
}
function mapStateToProps(state, { match: { params: {id} } }) {
return {
obj: someSelectorFunction(state, id);
};
}
export default connect(mapStateToProps)(DetailsPageComp);
当然,如果您使用<Route render={}
版本,则需要向下传递match
:
<Route render={({ match }) => <DetailsPageComp match={match} />} path="..." />