首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在React路由器中,<Switch>和将'Exact‘放在'path’之前有什么区别?

在React Router中,<Switch>组件用于渲染与当前URL匹配的第一个子<Route><Redirect>

Switch

<Switch>组件会遍历其所有子路由,并仅渲染与当前URL完全匹配的第一个路由。如果没有找到匹配项,则不渲染任何内容。

代码语言:javascript
复制
<Switch>
  <Route exact path="/" component={Home} />
  <Route path="/about" component={About} />
  <Route path="/contact" component={Contact} />
</Switch>

在这个例子中,当用户访问根路径("/")时,将渲染Home组件。当访问"/about"或"/contact"时,将分别渲染AboutContact组件。

Exact

exact属性用于确保只有当URL与path完全匹配时,才渲染对应的组件。如果没有exact属性,那么带有子路径的路由将始终匹配其父路由。

代码语言:javascript
复制
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
<Route path="/contact" component={Contact} />

在这个例子中,exact属性确保只有当用户访问根路径("/")时,才渲染Home组件。如果没有exact属性,当访问"/about"或"/contact"时,由于这些路径以"/"开头,Home组件也会被渲染。

总结

  • <Switch>用于确保仅渲染与当前URL匹配的第一个子路由。
  • exact属性用于确保只有当URL与path完全匹配时,才渲染对应的组件。

通常,你会在<Switch>组件内部使用带有exact属性的<Route>组件,以确保正确的路由匹配。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • React Router入门指南(包括Router Hooks)

    本教程,我介绍使用React Router入门所需的一切。...初始化项目 为了能够继续学习,您需要通过终端运行以下命令来创建一个新的react应用程序: npx create-react-app react-router-guide 然后,这些代码行添加到App.js...App.js, import React from "react"; import "....但是在这里,我们只需要路径渲染。 path:这是route的路径。在这里,我们使用 / 定义主页的路径。 render:到达路由时显示内容。在这里,我们向用户呈现欢迎消息。...但是,我们的路由器存在问题。即使我们切换到其他页面,Home组件也会一直显示。 原因是React Router检查定义的路径是否以/开头(如果是),它将呈现组件。

    12K20

    react-loadable懒加载

    React Loadable是一个小型库,它使以组件为中心的代码分割变得非常容易。 背景 当你的React应用,你把它Webpack捆绑在一起,一切都很顺利。...react-loadable的作用 由于路由只是组件,我们仍然可以路由级别轻松地进行代码拆分。 在你的应用程序引入新的代码分割点应该是如此简单,以至于你不会再三考虑。...这应该是一个改变几行代码其他一切都应该自动化的问题。 Loadable是一个高阶组件(一个创建组件的函数),它允许您在任何模块呈现到应用程序之前动态加载它。...您还需要考虑错误状态、超时,并使成为一种良好的体验。 Loadable 用于呈现模块之前动态加载模块的高阶组件,模块不可用时呈现加载组件。...r.exact} key={key} path={r.path} />)}

    2.6K10

    react-router 的使用与优化

    Route exact 属性表示只有 path 完全匹配时才渲染对应的组件,上面例子,如果没有 Switch 组件 exact 属性时,当访问 /123 路由页时,/ 路由也会匹配到,因为 /... Route 组件除了使用 component 指定一个组件外,还可以使用 render 函数,这个函数返回一个 React 组件,表示路由要渲染的内容: 组件时,浏览器历史记录会改变状态,同时屏幕更新。静态的服务器环境,无法直接更改应用程序的状态。...新的 ES 标准,有一个 import 异步加载模块的语法,可以做到这一点。只是使用时需要下载有关的包,因为不兼容。 create-react-app 已经集成了这一功能。...path="/abc" component={Home} /> </Switch

    3.2K10

    React中路由的使用

    react配置前端路由一般会使用react-router这个包,但是下V4版本之后,这个包针对不同的开发环境被拆分成了不同的包,web我们使用react-router-dom。...3、结构布局,Router最层,Switch中间层包裹所有Route,Link放在导航部分,一般Link部分会放在页面的公共部分。...上面三步基本基本能满足大部分React路由的需求了,但是这里面有需要大家注意的地方: A、首先是路由的匹配是从上到下,也就是switch包裹的Route,先匹配/about,匹配/users,匹配...,其实这里还有另外一种使用方式,个/路由组件添加一个exact属性,这是精确匹配的意思,只用路由是/才能这个路由匹配。...局部代码如下: <Route path="/about

    1.4K40

    前端路由Router原理

    在前端开发,我 们可以使⽤路由设置访问路径,并根据路径与组件的映射关系切换组件的显示,⽽这整个过程都是同 ⼀个⻚⾯实现的,不涉及⻚⾯间的跳转,这也就是我们常说的单⻚应⽤(spa)。...react-router-dom react-router-native 都依赖 react-router,所以安装时,react-router 也会自动安装,创建 web 应用。...MemoryRouter 把 URL 的历史记录保存在内存的 (不读取、不写入地址栏)。测试非浏览器环境很有用,如 React Native。...基本使用 react-router 奉行一切皆组件的思想,路由器-「Router」、链接-「Link」、路由-「Route」、独占-「Switch」、重定向-「Redirect」都以组件形式存在 import...Route 核心渲染代码如下: image20200224174023810 404 页面 设定一个没有 path 的路由路由列表最后面,表示一定匹配 <Route path=

    2.7K20

    手写React-Router源码,深入理解其原理

    之所以把他们放在一起,是因为他们之前有很强的依赖关系: react-router:是React-Router的核心库,处理一些共用的逻辑 react-router-config:是React-Router...像React-Router这样多个库放在同一个git repo里面的就是monorepo。...所以现在很多开源库都使用monorepo来依赖很强的模块放在一个repo里面,比如React源码也是一个典型的monorepo。 ?...方法等,具体代码可以看这里:github.com/ReactTraini… 其实到这里,React-Router的核心功能已经实现了,但是我们开始的例子还用到了SwitchLink组件,我们也一起来把它实现了吧...具体渲染时路由配置的path当前浏览器地址做一个对比,匹配上就渲染对应的组件。

    1.5K51
    领券