首页
学习
活动
专区
工具
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>组件,以确保正确的路由匹配。

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

相关·内容

  • import {BrowseRouter,Routes,Route} from react-router-dom 里面的BrowseRouter是什么?

    在React Router库中,BrowserRouter是一种用于在React应用程序中实现路由功能的组件。它是React Router提供的一种路由器组件之一。...它是React Router库中最常用的路由器组件之一。 使用BrowserRouter时,你可以在应用程序的根级别将其作为包装组件。它会基于当前URL路径匹配与之关联的路径,并渲染相应的组件。...以下是一个示例,展示了如何在React应用程序中使用BrowserRouter组件和其他相关组件: import React from 'react'; import { BrowserRouter,...Route, Switch, Link } from 'react-router-dom'; const Home = () => Home Page; const About =...> exact path="/" component={Home} /> path="/about" component={About} />

    25720

    React Router v4教程:为你的 React 应用创建路由

    网站介绍的详细信息可以在“关于我们”页面上找到,用户列表及其详细信息会出现在不同的页面上,可能还有其他各种页面包含很多不同的视图。 那么你认为这是怎样实现的呢?在程序中添加路由器可以解决这一需求。...虽然他们的谈话中的着眼点是围绕路由器 API 是如何“All About Components”的。 在React中,只涉及单个 “Html” 文件。...在前面的例子中没有使用 exact,URL '/' 将匹配路径 '/'、'/about' 和 '/topics'。...1switch> 2 exact path=’/’ component={Home}/> 3 path=’/users/:id’ component={User }.../> 4 path=’/users’ component={Roster}/> 5switch> 在示例中,我们将路径 /users/:id 放置在 /users 前面。

    2K20

    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} />)} Switch>

    2.6K10

    react-router 的使用与优化

    Route 中的 exact 属性表示只有 path 完全匹配时才渲染对应的组件,上面例子中,如果没有 Switch 组件和 exact 属性时,当访问 /123 路由页时,/ 路由也会匹配到,因为 /...在 Route 组件中除了使用 component 指定一个组件外,还可以使用 render 函数,这个函数返回一个 React 组件,表示路由要渲染的内容: exact path="/"...当在浏览器上渲染一个 组件时,浏览器历史记录会改变状态,同时将屏幕更新。在静态的服务器环境中,无法直接更改应用程序的状态。...在新的 ES 标准中,有一个 import 异步加载模块的语法,可以做到这一点。只是使用时需要下载有关的包,因为不兼容。在 create-react-app 中已经集成了这一功能。...path="/abc" component={Home} /> exact path="/user" component={Profile} /> 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属性,这是精确匹配的意思,只用路由是/才能和这个路由匹配。...局部代码如下: Switch> exact={true} path="/"> 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 的路由在路由列表最后面,表示一定匹配 Switch> 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的核心功能已经实现了,但是我们开始的例子中还用到了Switch和Link组件,我们也一起来把它实现了吧...具体渲染时将路由配置的path和当前浏览器地址做一个对比,匹配上就渲染对应的组件。

    1.6K51
    领券