如果路径在 Route React 中是动态的,如何重定向到“/”

Posted

技术标签:

【中文标题】如果路径在 Route React 中是动态的,如何重定向到“/”【英文标题】:How to redirect to "/" if path is dynamic in Route React 【发布时间】:2021-10-19 18:19:07 【问题描述】:
<Router>
    <Switch>
        <Route
              exact
              path="/path1/"
              component=Page1 //(1)
            />

        details && details.show_page && (
              <Route
                path=`/$details && details.page_url` //path2
                component=Page2
              />
            ) //(2)
        <Redirect from="*" to="/" />
    </Switch>
</Router>

当用户输入无效路径(未包含在路由器中)时,我需要将用户重定向到“/”。

当用户输入“path1”时,他将被重定向到“path1”就好了(1)

当用户输入动态的“path2”时,他将被重定向到“/”(2)

额外信息:我正在使用 Redux 来获取 path2 的值,所以我正在路由器内部检查它的值。(2)

【问题讨论】:

【参考方案1】:

我认为您应该将其添加为最后一条路线:&lt;Route&gt;&lt;Redirect to="/"/&gt;&lt;/Route&gt;

<Router>
    <Switch>
        <Route
              exact
              path="/path1/"
              component=Page1 //(1)
            />

        details && details.show_page && (
              <Route
                path=`/$details && details.page_url` //path2
                component=Page2
              />
            ) //(2)
        <Route><Redirect to="/"/></Route>
    </Switch>
</Router>

【讨论】:

@Miss.Tea 我添加了完整的路由器代码。这在我的项目中按预期工作。【参考方案2】:

试试这个...通常重定向需要 if/else 条件才能正常工作。

<Router>
    <Switch>
        <Route
            exact
            path="/path1/"
            component=Page1
        />

        details && details.show_page ? (
            <Route
                path=`/$details && details.page_url/`
                component=Page2
            />
        ) : <Redirect from="*" to="/" />
        
    </Switch>
</Router>

【讨论】:

它仍然将我重定向到“/” 尝试使用这个而不是重定向&lt;Route path='*' exact=true component=MyDefaultComponent /&gt; 如果这不起作用,那么试试这个。 &lt;Redirect to="/" /&gt; 作为您的重定向。在那之后,如果它不起作用,我将停止提供糟糕的建议。

以上是关于如果路径在 Route React 中是动态的,如何重定向到“/”的主要内容,如果未能解决你的问题,请参考以下文章

route和router 当前与全局路由

React Router 未路由到 Route 元素中指定的路径

React 路由动态加载

router 和 route 的区别

使用身份验证保护 React Route 中内容的正确方法?

react-router中获取某个Route的路径