首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在函数中创建react-router路由

在函数中创建react-router路由
EN

Stack Overflow用户
提问于 2017-02-15 21:02:56
回答 2查看 1.4K关注 0票数 1

可以通过函数创建<Route>元素吗?我想要显示不同的路由/页面,但应用程序不知道它们有多少。页面处于存储在页面对象数组中的状态。到目前为止,每个页面对象都有id、title、path和body元素。我认为我的路由器应该是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
render((
  <Router history={browserHistory}>
    <Route path="/" component={App}>
      <Route path="page1" component={CommonPage}/>
      <Route path="page2" component={CommonPage} />
      <Route path="page3" component={CommonPage} />
      <Route path="page4" component={CommonPage}/>
      <Route path="page5" component={CommonPage} />
      <Route path="page6" component={CommonPage} />
      </Route>
      <Route path="*" component={NoMatch}/>
    </Route>
  </Router>
), document.body)

我想用如下的函数来定义它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
render((
  <Router history={browserHistory}>
    <Route path="/" component={App}>
      {
        mapPagesToRoutes(pages) 
       }
      <Route path="*" component={NoMatch}/>
    </Route>
  </Router>
), document.body)

mapPagesToRoutes(pages)  {
  return pages.map( page => () {
    if(page.type === 'CommonPage' {
       return <Route path={page.path}  component={CommonPage}
    }
  }
}

Q1:这是怎么做的?Q2:我如何用路径以外的其他东西来标识每一个。我可以在<Route>中使用某种key=page.id吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-15 22:08:04

如果要将属性传递给子管线组件,可以执行以下操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        <Route path={page.path} component={() => <CommonPage someProp={page.someProp}/>}/>
票数 1
EN

Stack Overflow用户

发布于 2017-02-15 23:44:14

如果您想要动态创建React路由,那么您可以使用带有参数的路由,如下所示。这是您的路由器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
render((
  <Router history={browserHistory}>
    <Route path="/" component={App}>
      <Route path="/page:pageNumber" pages={this.state.pages} component={CommonPage} />
      <Route path="*" component={NoMatch}/>
    </Route>
  </Router>
), document.body)

然后在你的CommonPage组件中拥有类似这样的东西:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
render() {
    return(<div>This is {this.props.params.pageNumber}</div>);
}

这将使您能够导航到任何/pageX路由。然后,在CommonPage组件中,您可以比较pageNumber参数和pages属性(可通过this.props.route.pages获得),以查看当前页码是否有效

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42259992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文