当我试图导航到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的样子:
<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。
<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>/上,但这似乎很麻烦/错误。
有更简单的方法来达到我想要做的吗?还是我误用了反应路由器?
发布于 2019-03-05 23:47:59
你搞定这个了吗?如果你能提供更多的代码(或回购),我可以看看。
我尝试了以下对我有用的方法(react-router-dom版本4.3.1)
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;https://stackoverflow.com/questions/53501378
复制相似问题