我有2条使用相同组件(表单)的路由,一条用于创建新条目,另一条用于编辑。来自React Router的州名has been removed,我无法检查this.route.name ==='编辑' =>取(itemAPI)。
一个选项是编写reducer / action来创建"编辑"在我的redux商店中陈述,但我想知道它是否是最好的做法,如果有更简单的方法来检查我在应用程序中的位置(哪条路线)。
我的路线:
<Route component={ItemNew} path='/items/edit/:id' />
<Route component={ItemNew} path='/items/new' />
在我的ItemNew组件中,我想:
componentDidMount () {
let stateName = this.props.location.state
if(stateName === 'edit') {
this.props.fetchItem() // dispatch API action
}
}
答案 0 :(得分:2)
用于执行当前网址匹配的最后部分的Route
组件显示在this.props.route
上;参与匹配的嵌套Route
的完整列表位于this.props.routes
数组中。您可以将任意道具传递到这些Route
并稍后检索它们。例如:
<Route component={ItemNew} name="edit" path='/items/edit/:id' />
<Route component={ItemNew} name="add" path='/items/new' />
和
componentDidMount () {
if(this.props.route.name === 'edit') {
this.props.fetchItem() //dispatch API action
}
}