首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有React路由器4的嵌套交换机和默认子路由

带有React路由器4的嵌套交换机和默认子路由
EN

Stack Overflow用户
提问于 2018-11-27 13:59:01
回答 1查看 1.1K关注 0票数 0

当我试图导航到Warning: You tried to redirect to the same route you're currently on时,我一直收到警告/articles/<article_id>/details

我现时有下列路线:

  • /
  • /settings
  • /settings/connections
  • /articles
  • /articles/:article_id
  • /articles/:article_id/:author_id
  • /articles/:article_id/:author_id/details
  • /login
  • /logout

下面是我的主Switch的样子:

代码语言:javascript
复制
<Router>
  <Switch>
    <Route path="/articles" component={Articles} />
    <Route path="/settings" component={Settings} />
    <Route path="/login" component={Login} />
    <Route path="/logout" component={Logout} />
    <Redirect from="/" to="/articles" exact />
    <Route component={NotFound} />
  </Switch>
</Router>

然后,在Articles.js,我有另一个Switch

代码语言:javascript
复制
<Switch>
  <Route path="/articles/:article_id/details" component={ArticleDetail} />
  <Route path="/articles/:article_id/authors" component={ArticleAuthors} />
  <Route path="/articles/:article_id/authors/:author_id" component={ArticleAuthor} />
  <Route path="/articles/:article_id/authors/:author_id/details" component={ArticleAuthorDetails} />
  <Redirect from="/articles/:article_id" to="/articles/:article_id/details" exact />
</Switch>

问题是:当我手动导航到/articles/<article_id>/details时,我会得到前面提到的警告。在重定向之前,我尝试过手动检查当前路由是否位于/articles/<article_id>/articles/<article_id>/上,但这似乎很麻烦/错误。

有更简单的方法来达到我想要做的吗?还是我误用了反应路由器?

EN

回答 1

Stack Overflow用户

发布于 2019-03-05 23:47:59

你搞定这个了吗?如果你能提供更多的代码(或回购),我可以看看。

我尝试了以下对我有用的方法(react-router-dom版本4.3.1)

代码语言:javascript
复制
import React from "react";
import { BrowserRouter as Router, Route, Switch, Redirect } from "react-router-dom";

const Settings = () => (<div>Settings</div>);
const ArticleAuthors = () => (<div>ArticleAuthors</div>);
const ArticleDetail = () => (<div>ArticleDetail</div>);

const Articles = () => (
    <div>
        Articles
        <Switch>
            <Route path="/articles/:article_id/details" component={ArticleDetail} />
            <Route path="/articles/:article_id/authors" component={ArticleAuthors} />
            <Redirect from="/articles/:article_id" to="/articles/:article_id/details" exact />
        </Switch>
    </div>
);


const App = () => (
    <Router>
        <Switch>
            <Route path="/articles" component={Articles} />
            <Route path="/settings" component={Settings} />
            <Redirect from="/" to="/articles" exact />
        </Switch>
    </Router>
);

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

https://stackoverflow.com/questions/53501378

复制
相关文章

相似问题

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