首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应路由器4:要么-要么路由

反应路由器4:要么-要么路由
EN

Stack Overflow用户
提问于 2017-05-10 11:02:29
回答 2查看 824关注 0票数 2

我有一个案子,我想在表格上建立一个网址计划。

代码语言:javascript
复制
/items/ <- list of items
/items/1 <- item1
/items/2 <- item2
...
/items/2 <- itemn
/items/new <- create item

根据我对其他路由框架的解释,我尝试了以下方法:

代码语言:javascript
复制
function (props) {
    var match = props.match;
    return (
        <div>
            <Route path={ `${match.url}/new` }
                   component={ Create } />
            <Route path={ `${match.url}/:id` }
                   component={ Details } />
            <Route exact
                   path={ match.url }
                   component={ List } />
        </div>
    );
}

但是,当我导航到/items/new时,Create组件和Detail组件都呈现出来。

我的解决办法是包装细节组件,如下所示:

代码语言:javascript
复制
function DetailContainer (props) {
    if (props.match.params.id === 'new') {
      return null;
    }
    return (
      <Detail {...props} />
    );
}

但对我来说,这似乎有点刻薄。是否可以单靠路线来建立这种行为呢?我知道这就是在rr4中所做的事情,但是根据我从文档中收集到的信息,这里的路由概念有点不同(这意味着几条路由可以一次呈现)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-11 12:14:14

在推特上,我被指向了https://reacttraining.com/react-router/web/example/ambiguous-matches的方向

我要找的是开关:

代码语言:javascript
复制
function (props) {
    var match = props.match;
    return (
        <div>
            <Switch>
                <Route path={ `${match.url}/new` }
                       component={ Create } />
                <Route path={ `${match.url}/:id` }
                       component={ Details } />
            </Switch>
            <Route exact
                   path={ match.url }
                   component={ List } />
        </div>
    );
}
票数 2
EN

Stack Overflow用户

发布于 2017-05-11 12:00:01

路由器的路径部分似乎是基于以下模块:https://www.npmjs.com/package/path-to-regexp

因为看起来您可以在路径部分中使用regex-表达式,所以可以不使用

代码语言:javascript
复制
path={ `${match.url}/(:id?!new)` }

或者什么..。(我的大王在这一点上并不了不起)

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

https://stackoverflow.com/questions/43890603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档