您好,我希望它在InstrumentPage
被访问但在#/
被访问时不带道具的情况下渲染#/ipb
作为道具实体。但这不起作用。
ipb
AppConfig
render() {
return (<React.Fragment>
<HashRouter>
<Switch>
<Route path='/' render={(props) => <InstrumentPage {...props} />}/>
{Object.keys(AppConfig).forEach((property) =>
<Route path={property} render={(props) => <InstrumentPage {...props} entity={property} />} />)
}
</Switch>
</HashRouter>
</React.Fragment>);
}
答案 0 :(得分:5)
您需要使用map
并返回Route
,forEach
只会返回undefined
。
<Switch>
<Route exact path='/' render={(props) => <InstrumentPage {...props} />}/>
{Object.keys(AppConfig).map((property) =>
<Route
path={`/${property}`}
render={ (props) => <InstrumentPage {...props} entity={property} /> }
/>
)
}
</Switch>
注意:当您写path={property}
表示path={ipb}
或path={pb}
这是不正确的路径时。正确的路径应为path="/ipb"
(注意斜线),为此,您需要做/${property}
[包含反选标记(使用Template string)。
还要为您的第一个exact
添加Route
道具,否则它将与所有Routes
匹配。