如何在ReactJS中的模糊路由中的第一次匹配时停止路由器匹配

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在ReactJS中的模糊路由中的第一次匹配时停止路由器匹配相关的知识,希望对你有一定的参考价值。

在我的项目中,我有不同页面的路线。我想在第一次路线匹配时停止执行。我的route.js文件有这个代码

export default [
    {
        exact: true,
        component: Home,
        path: "/"
    },
    {
        exact: true,
        component: ShopingCart,
        path: "/shopingcart"
    },
    {
        exact: true,
        component: LinkChanger,
        path: "/:pathname"
    }
];

我有一个使用这些route.js文件的文件

<Switch>
    <Router  history={history} >
        <div>
        {
             routes.map( (route, index) =>
             <Route key={index} exact={route.exact} path={route.path} component={(props)=><route.component {...props} isAuthed={true} />}/>)
        }
        </div>
    </Router>
</Switch>

当我将链接更改为/ shopingcart时。首先调用组件ShopingCart,然后调用LinkChanger。即使在使用开关后,我的第二个组件LinkChanger也会被调用。他们以任何方式在第一场比赛时停止路由器。

答案

尝试在Switch内包装Router -

<Router history={history}>
    <Switch>
        {
            routes.map( (route, index) =>
            <Route key={index} exact={route.exact} path={route.path} component={(props)=><route.component {...props} isAuthed={true} />}/>)
        }
    </Switch>
</Router>
另一答案
 <Switch>
    <div>
    {
         routes.map( (route, index) =>
         <Route key={index} exact={route.exact} path={route.path} component={(props)=><route.component {...props} isAuthed={true} />}/>)
    }
 </Switch>
另一答案

当我用开关替换div时,它工作

<Router history={history}>
        <Switch>
        {
            routes.map( (route, index) =>
            <Route key={index} exact={route.exact} path={route.path} component={(props)=><route.component {...props} isAuthed={true} />}/>)
        }
        </Switch>
</Router>

以上是关于如何在ReactJS中的模糊路由中的第一次匹配时停止路由器匹配的主要内容,如果未能解决你的问题,请参考以下文章

当 URL 不匹配任何路由并且 URL 包含 /#/ 时如何使用 ReactJS 显示 404

ReactJS 中的参数路由不显示 UI 组件

如何保护 ReactJs 中的路由?

如何从 ReactJS 中的外部函数重定向到路由

ReactJS 中的动态路由到底是啥

在生产中管理 reactjs 应用程序中的路由