使用render()时REACT路由器无法访问params

时间:2017-11-17 19:16:12

标签: reactjs react-router react-router-v4 react-props

我是redux的新手,我创建了一个导航到用户编辑页面的路线,我还想使用下面的代码将商店和历史作为道具传递。

<Route path="/edit/:id" render={({history}) => (
          <EditUser store={store} history={history} />
)}/>

但现在我无法访问我在EditUser组件中传递的参数(:id)。当我尝试使用 this.props.match.params.id 进行访问时,它显示未定义,但如果我将路由重写为

,则它会起作用
<Route path="/edit/:id" component={EditUser}/>

但现在我认为我无法传递其他道具。

非常感谢。

1 个答案:

答案 0 :(得分:4)

如果您想使用match,则必须将其传递给您的组件。

<Route path="/edit/:id" render={({history, match}) => (
  <EditUser store={store} history={history} match={match} />
)}/>

您也可以传递所有道具:

<Route path="/edit/:id" render={props => (
  <EditUser store={store} {...props} />
)}/>

或者您可以使用react-redux的connect功能来访问商店

<Route path="/edit/:id" component={connect(mapStateToProps)(EditUser)}/>