React-Router-Switch

简介: React-Router-Switch

前言


React Router Switch 是 React Router 库的一部分,它是一个用于渲染与当前 URL 匹配的第一个 <Route><Redirect> 的包裹组件。它通常用于路由配置中,以确保只渲染与当前 URL 匹配的第一个路由。


React Router 是 React 应用程序中用于管理页面导航和路由的库,它允许你在不刷新整个页面的情况下,根据 URL 的变化渲染不同的组件。Switch 组件是 React Router 中的一个关键组件,因为它帮助你避免多个路由同时匹配的问题。


使用 Switch,你可以按顺序放置多个 <Route><Redirect> 组件,并且它将只匹配第一个与当前 URL 匹配的路由,忽略后续的路由。这有助于确保只有一个组件与 URL 匹配,避免渲染多个匹配的组件,从而保持路由的一致性和可预测性。


总之,React Router Switch 是 React Router 中的一个重要工具,用于确保在导航时只渲染一个特定的路由组件,以确保良好的用户体验和路由逻辑。它是构建单页面应用程序(SPA)的必备组件之一。




Switch


  • 默认情况下路由会从上至下匹配所有的 Route, 只要匹配都会显示
  • 如果 Route 没有指定 path, 那么表示这个 Route 和所有的资源地址都匹配

新建 Other.js:

import React from 'react';
class Other extends React.PureComponent {
    render() {
        return (
            <div>Other</div>
        )
    }
}
export default Other;

App.js:

import React from 'react';
import Home from './components/Home'
import About from './components/About'
import Other from './components/Other'
import {BrowserRouter, HashRouter, Link, NavLink, Route, Routes} from 'react-router-dom';
class App extends React.PureComponent {
    render() {
        return (
            <div>
                <BrowserRouter>
                    <Link to={'/home'}>Home</Link>
                    <Link to={'/home/about'}>About</Link>
                    <Route path="/home" component={Home}/>
                    <Route path="/home/about" component={About}/>
                    <Route component={Other}/>
                </BrowserRouter>
            </div>
        )
    }
}
export default App;


在页面的体现就是不管你点击的是 Home 还是 About 都会显示 Other 组件出来,如果想要匹配到了之后就不在往后匹配了就需要使用如下的方案进行解决即可。


  • 但是在企业开发中大部分情况下, 我们希望的是一旦有一个匹配到了后续就不要再匹配了
  • 此时我们就可以通过 Switch 来实现

更改 App.js:

import React from 'react';
import Home from './components/Home'
import About from './components/About'
import Other from './components/Other'
import {BrowserRouter, HashRouter, Link, NavLink, Route, Routes, Switch} from 'react-router-dom';
class App extends React.PureComponent {
    render() {
        return (
            <div>
                <BrowserRouter>
                    <Link to={'/home'}>Home</Link>
                    <Link to={'/about'}>About</Link>
                    <Switch>
                        <Route exact path="/home" component={Home}/>
                        <Route exact path="/about" component={About}/>
                        <Route exact component={Other}/>
                    </Switch>
                </BrowserRouter>
            </div>
        )
    }
}
export default App;


最后

本期结束咱们下次再见👋~

🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗

相关文章
|
Java API 数据库
Java一分钟之-JPA注解:@Entity, @Table, @Id等
【6月更文挑战第14天】Java Persistence API (JPA) 是Java开发中的ORM框架,通过注解简化数据访问层。本文介绍了三个核心注解:`@Entity`标识实体类,`@Table`自定义表名,`@Id`定义主键。易错点包括忘记添加`@Entity`、未正确设置主键。建议使用`@GeneratedValue`和`@Column`细化主键策略和字段映射。正确理解和应用这些注解能提高开发效率和代码质量。
965 3
npm如何切换淘宝源镜像
npm如何切换淘宝源镜像
4196 0
|
JSON 测试技术 API
评测最火的 11 款 REST API GUI
尽管 RESTful Web 服务具有可扩展性且易于维护,但是手动进行 API 测试操作复杂,因此我们需要选择一些好用的客户端来帮助我们测试 REST API。这里,码匠为大家罗列了 11 款最火的用于 REST API 测试的客户端工具。
5347 1
评测最火的 11 款 REST API  GUI
阿里云CloudOps MCP正式上架百炼平台MCP市场
阿里云CloudOps MCP现已集成至百炼平台官方MCP市场,用户可便捷使用并将其集成到智能体应用中。配置方法包括登录百炼平台,在MCP市场找到阿里云CloudOps MCP,完成开通、角色创建与权限设置,选择部署模式及地域后确认开通。随后可通过“添加到智能体”或在应用管理中集成到现有智能体或工作流应用。更多示例与权限细则详见文档,欢迎加入钉钉交流群获取支持。
|
10月前
|
安全 程序员 测试技术
推荐7款程序员常用的API管理工具
本文所有工具都已收录至Awesome Tools,程序员常用高效实用工具、软件资源精选,办公效率提升利器。
662 3
|
存储 机器学习/深度学习 人工智能
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
|
消息中间件 Java Kafka
Kafka不重复消费的终极秘籍!解锁幂等性、偏移量、去重神器,让你的数据流稳如老狗,告别数据混乱时代!
【8月更文挑战第24天】Apache Kafka作为一款领先的分布式流处理平台,凭借其卓越的高吞吐量与低延迟特性,在大数据处理领域中占据重要地位。然而,在利用Kafka进行数据处理时,如何有效避免重复消费成为众多开发者关注的焦点。本文深入探讨了Kafka中可能出现重复消费的原因,并提出了四种实用的解决方案:利用消息偏移量手动控制消费进度;启用幂等性生产者确保消息不被重复发送;在消费者端实施去重机制;以及借助Kafka的事务支持实现精确的一次性处理。通过这些方法,开发者可根据不同的应用场景灵活选择最适合的策略,从而保障数据处理的准确性和一致性。
885 9
|
前端开发 UED
|
存储 监控 前端开发
Sentry 监控部署与使用(详细流程)
Sentry 监控部署与使用(详细流程)
12729 1
|
前端开发 JavaScript 安全
如何在React项目中动态插入HTML内容
如何在React项目中动态插入HTML内容
480 0