前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React-Router-Switch

React-Router-Switch

原创
作者头像
杨不易呀
发布2023-10-01 07:23:38
4010
发布2023-10-01 07:23:38
举报
文章被收录于专栏:杨不易呀

前言

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:

代码语言:javascript
复制
import React from 'react';

class Other extends React.PureComponent {
    render() {
        return (
            <div>Other</div>
        )
    }
}

export default Other;

App.js:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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;
输入图片说明
输入图片说明

最后

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

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

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

输入图片说明
输入图片说明

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Switch
  • 最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档