已声明React Router,但无法正常工作

时间:2019-08-24 04:39:41

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

您好,我希望它在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>);
  }

1 个答案:

答案 0 :(得分:5)

您需要使用map并返回RouteforEach只会返回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匹配。