如何从mapstatetoprops访问反应路由器匹配对象

时间:2019-07-01 22:00:05

标签: javascript reactjs redux react-redux react-router

我想知道如何从mapStateToProps或任何此类选择器中访问react-router匹配对象的参数。我想从参数中构建一些东西,并将其作为道具传递给选择器中的表示性组件。我有一个接受built道具的组件,我希望传递给它一些从react router参数派生的值。我最好不希望将params传递为道具。

1 个答案:

答案 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="..." />