PARAMS我建設有反應的應用,做出反應,路由器(V5)和終極版,不知道如何訪問當前URL的PARAMS在父路徑。如何讓父路由組件
這是我的條目中,router.js
:
<Wrapper>
<Route exact path="/login" render={(props) => (
<LoginPage {...props} entryPath={this.entryPath} />
)} />
<Route exact path="/" component={UserIsAuthenticated(HomePage)} />
<Route exact path="/about" component={UserIsAuthenticated(AboutPage)} />
<Route path="/projects" component={UserIsAuthenticated(ProjectsPage)} />
</Wrapper>
這就是我的ProjectsPage
組件:
class ProjectsPage extends PureComponent {
componentDidMount() {
this.props.fetchProjectsRequest()
}
render() {
console.log(this.props.active)
if (this.props.loading) {
return <Loading />
} else {
return (
<Wrapper>
<Sidebar>
<ProjectList projects={this.props.projects} />
</Sidebar>
<Content>
<Route exact path="/projects" component={ProjectsDashboard} />
<Switch>
<Route exact path="/projects/new" component={ProjectNew} />
<Route exact path="/projects/:id/edit" component={ProjectEdit} />
<Route exact path="/projects/:id" component={ProjectPage} />
</Switch>
</Content>
</Wrapper>
)
}
}
}
const enhance = connect(
(state, props) => ({
active: props.match,
loading: projectSelectors.loading(state),
projects: projectSelectors.projects(state)
}),
{
fetchProjectsRequest
}
)
export default withRouter(enhance(ProjectsPage))
的問題是,在我的render
方法console.log
輸出爲{"path":"/projects","url":"/projects","isExact":false,"params":{}}
雖然URL是http://localhost:3000/projects/14
。
我想添加一個ID
道具到我的ProjectList
以突出顯示當前選定的項目。
我可以將項目ID保存在我的ProjectPage
組件中的商店中,但我認爲這會有點令人困惑,尤其是因爲URL實際上具有這些信息 - 所以爲什麼我應該在商店中寫些東西?
另一個(壞?)方法是解析位置對象並自己獲取ID,但我認爲有一個方法可以獲得我忽略的參數。
這太棒了!這就是我所尋找的:-)目前我正在使用'router-parser',但是使用'react-router'包中的方法是絕對有意義的。事實上,我已經在使用路由的常量了:-) – Slevin