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

当"exact“未打开时,为什么react-router不能拾取不完全匹配的路由?

当"exact"未打开时,react-router不能拾取不完全匹配的路由是因为react-router在匹配路由时,默认使用的是模糊匹配(partial match)的方式。模糊匹配是指当URL路径的一部分与路由配置中的路径匹配时,就会被认为是匹配成功。

然而,当"exact"未打开时,react-router会继续向下匹配其他路由,直到找到第一个匹配成功的路由为止。这意味着如果存在多个路由路径部分匹配的情况,react-router会选择第一个匹配成功的路由进行渲染,而不会继续匹配其他可能的路由。

这种行为的优势在于可以实现路由的嵌套和层级管理,同时也可以提高路由匹配的效率。例如,当我们有一个路由配置为"/users",另一个路由配置为"/users/:id",当访问"/users/123"时,如果"exact"未打开,react-router会优先匹配到"/users"路由,而不会继续匹配"/users/:id"路由。

这种模糊匹配的应用场景包括但不限于以下情况:

  • 实现路由的嵌套和层级管理
  • 提高路由匹配的效率

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):提供弹性计算能力,满足各类业务需求。产品介绍链接
  • 腾讯云云数据库 MySQL 版:提供高性能、可扩展的关系型数据库服务。产品介绍链接
  • 腾讯云对象存储(COS):提供安全、稳定、低成本的云端存储服务。产品介绍链接
  • 腾讯云人工智能:提供丰富的人工智能服务和解决方案,包括图像识别、语音识别、自然语言处理等。产品介绍链接
  • 腾讯云物联网平台(IoT Hub):提供全面的物联网解决方案,帮助用户快速构建和管理物联网应用。产品介绍链接
  • 腾讯云移动推送(TPNS):提供高效、稳定的移动消息推送服务,支持多种推送方式和场景。产品介绍链接
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

react-router 使用与优化

window.location.replace("/") 表示重定向到某个页面,重定向相当于代替之前路由,之前那个路由不能后退回来。...Route 中 exact 属性表示只有 path 完全匹配才渲染对应组件,上面例子中,如果没有 Switch 组件和 exact 属性访问 /123 路由,/ 路由也会匹配到,因为 /...使用 Switch ,被 Switch 包裹 Route 就只能匹配到一个,当上面的路由匹配到后,Switch 下面的组件就会不再匹配了。...比如如果把 exact 属性都去除,这时访问 /123 页面,渲染却只有 Home 组件,这是因为 Home 组件路由是 /,而 /123 包含它,Switch 从上往下匹配,第一个符合条件,下面的路由就不再匹配...点击 Link 包裹文字后,就会使用该路径,并将路径匹配组件加载到页面上。

3.2K10

从零手写react-router

匹配结果返回出去 // 首先, 如果你读了这个path-to-regex文档的话, 你会发现一个问题 // 我们在react-router中传递exact为精确匹配, 而在该库中则是使用end...方法, 都会根据参数返回给我们一个react-routermatch对象,参考 前端手写面试题详细解答history库使用我们知道, 当路由匹配组件以后, react-router会向组件内部注入一些属性...; // 依旧给他来null就好了}其实我们这里我们跟react-router还有一点区别, Route组件path没有的时候, 他也会直接渲染所匹配组件, 我这里没有写, 为什么呢, 因为我觉得他这样不合逻辑...方法, 都会根据参数返回给我们一个react-routermatch对象,参考 前端手写面试题详细解答history库使用我们知道, 当路由匹配组件以后, react-router会向组件内部注入一些属性...; // 依旧给他来null就好了}其实我们这里我们跟react-router还有一点区别, Route组件path没有的时候, 他也会直接渲染所匹配组件, 我这里没有写, 为什么呢, 因为我觉得他这样不合逻辑

3.1K30

react-router4

一、关于react-router react-router是一些封装好组件用于前端路由,当我们点击时候会出现一个虚拟路由,并不会做页面的全刷新,实现不同组件之间切换和跳转。...知道如何去监听浏览器地址栏变化, 并解析这个 URL 转化为 location 对象, 然后 router 使用它匹配路由,最后正确地渲染对应组件。)...Route有path,component和exact属性,path为跳转路由路径,component为跳转组件。...Route不是全匹配,所以当我们进行路由判断时候,比如一个路径为"/",一个为“/news”这样我们进行跳转“/news”时任然会匹配到“/”,所以这时我们需要使用exact加在有"/"路径Route...上,加上以后路由绝对相等才会去匹配 <Route path

1.5K30

从零手写react-router

$/i), 然后将地址栏path值取出来跟该正则表达式进行匹配, 匹配上了就要渲染相应路由, 匹配不上就渲染其他逻辑path-to-regexp就是做这个事情, 他把我们给他路径字符串转换为正则表达式...// path: 就是我们要匹配路径规则// keys: 如果你传递了, 匹配上以后, 会把相对应参数key传递到keys数组中// options: 给path路径规则一些附加规则, 比如sensitive...将匹配结果返回出去 // 首先, 如果你读了这个path-to-regex文档的话, 你会发现一个问题 // 我们在react-router中传递exact为精确匹配, 而在该库中则是使用end...方法, 都会根据参数返回给我们一个react-routermatch对象,参考 前端手写面试题详细解答history库使用我们知道, 当路由匹配组件以后, react-router会向组件内部注入一些属性...; // 依旧给他来null就好了}其实我们这里我们跟react-router还有一点区别, Route组件path没有的时候, 他也会直接渲染所匹配组件, 我这里没有写, 为什么呢, 因为我觉得他这样不合逻辑

1.4K40

从零手写react-router

$/i), 然后将地址栏path值取出来跟该正则表达式进行匹配, 匹配上了就要渲染相应路由, 匹配不上就渲染其他逻辑path-to-regexp就是做这个事情, 他把我们给他路径字符串转换为正则表达式...// path: 就是我们要匹配路径规则// keys: 如果你传递了, 匹配上以后, 会把相对应参数key传递到keys数组中// options: 给path路径规则一些附加规则, 比如sensitive...将匹配结果返回出去 // 首先, 如果你读了这个path-to-regex文档的话, 你会发现一个问题 // 我们在react-router中传递exact为精确匹配, 而在该库中则是使用end..., 每次调用pathMatch方法, 都会根据参数返回给我们一个react-routermatch对象,history库使用我们知道, 当路由匹配组件以后, react-router会向组件内部注入一些属性...; // 依旧给他来null就好了}其实我们这里我们跟react-router还有一点区别, Route组件path没有的时候, 他也会直接渲染所匹配组件, 我这里没有写, 为什么呢, 因为我觉得他这样不合逻辑

1.4K50

使用React-Router实现前端路由鉴权

React-Router是React生态里面很重要一环,现在React单页应用路由基本都是前端自己管理,而不像以前是后端路由,React管理路由库常用就是React-Router。...然后我们就可以在App.js里面引入React-Router路由跳转了,注意我们在浏览器上使用是react-router-dom,新版React-Router将核心逻辑层和展示层分开了,核心逻辑会处理路由匹配等...当然最直观最简单方法就是每个页面都检测下当前用户角色,匹配不上就报错或者跳回首页。...adminRoutes; 然后就可以写我们高级组件了,我们将它命名为AuthRoute吧,注意我们这里假设用户登录后端API会返回给我们当前用户角色,一个用户可能有多个角色,比如普通用户角色是...本文内容偏简单,作为熟悉React-Router用法还不错,但是我们不能只会用,还要知道他原理。

2.3K41

从零手写react-router_2023-03-01

$/i), 然后将地址栏path值取出来跟该正则表达式进行匹配, 匹配上了就要渲染相应路由, 匹配不上就渲染其他逻辑 path-to-regexp就是做这个事情, 他把我们给他路径字符串转换为正则表达式...// path: 就是我们要匹配路径规则 // keys: 如果你传递了, 匹配上以后, 会把相对应参数key传递到keys数组中 // options: 给path路径规则一些附加规则, 比如...将匹配结果返回出去 // 首先, 如果你读了这个path-to-regex文档的话, 你会发现一个问题 // 我们在react-router中传递exact为精确匹配, 而在该库中则是使用end...每次调用pathMatch方法, 都会根据参数返回给我们一个react-routermatch对象, history库使用 我们知道, 当路由匹配组件以后, react-router会向组件内部注入一些属性...null; // 依旧给他来null就好了 } 其实我们这里我们跟react-router还有一点区别, Route组件path没有的时候, 他也会直接渲染所匹配组件, 我这里没有写, 为什么

1.3K30

手写react-router

$/i), 然后将地址栏path值取出来跟该正则表达式进行匹配, 匹配上了就要渲染相应路由, 匹配不上就渲染其他逻辑path-to-regexp就是做这个事情, 他把我们给他路径字符串转换为正则表达式...// path: 就是我们要匹配路径规则// keys: 如果你传递了, 匹配上以后, 会把相对应参数key传递到keys数组中// options: 给path路径规则一些附加规则, 比如sensitive...将匹配结果返回出去 // 首先, 如果你读了这个path-to-regex文档的话, 你会发现一个问题 // 我们在react-router中传递exact为精确匹配, 而在该库中则是使用end..., 每次调用pathMatch方法, 都会根据参数返回给我们一个react-routermatch对象,history库使用我们知道, 当路由匹配组件以后, react-router会向组件内部注入一些属性...; // 依旧给他来null就好了}其实我们这里我们跟react-router还有一点区别, Route组件path没有的时候, 他也会直接渲染所匹配组件, 我这里没有写, 为什么呢, 因为我觉得他这样不合逻辑

1.3K40

「源码解析 」这一次彻底弄懂react-router路由原理

写在前面:为什么要学习react-router底层源码? 为什么要弄明白整个路由流程?...2 react-router初探,揭露路由原理面纱 ①react-router-dom和react-router和history库三者什么关系 history 可以理解为react-router核心,...如果存在多个Router会造成,会造成切换路由,页面不更新情况。 2 Switch-匹配正确唯一路由 根据router更新流,来渲染当前组件。...使得我们可以在页面组件中props中获取location ,match等信息。 4 Redirect-没有符合路由,那么重定向 重定向组件, 如果来路由匹配上,会重定向对应路由。...react-router提供路由渲染组件,路由唯一性匹配组件,重定向组件等功能组件。 流程分析 当地址栏改变url,组件更新渲染都经历了什么???? 拿history模式做参考。

3.8K40

React第三方组件1(路由管理之Router使用①简单使用)

1、React第三方组件1(路由管理之Router使用①简单使用)---2018.01.22 2、React第三方组件1(路由管理之Router使用②多层级跳转及重定向)---2018.01.23...3、React第三方组件1(路由管理之Router使用③传参)---2018.01.24 4、React第三方组件1(路由管理之Router使用④按需加载-上)---2018.01.25 5、React...react-router,首先放出它官网地址: https://reacttraining.com/react-router/web/guides/philosophy 我们废话不多,直接进入示列!...先来看下我们之前文件 ? 大家可能会奇怪为什么每个Index.jsx文件,都这么写,其实你可以不这么写,我只是为了预留给将来用react-router使用!...exact :精确匹配 如果你组件需要传值,就得返回这个组件: }/> 不需要传值就直接这样写

1.7K30

React 中一些 Router 必备知识点

在处理 URL ,除了问号带参数方式,React-Router 能帮我们做什么呢?在这其中,Route 组件 path 属性便可用于指定路由匹配规则。...URL 上,此时,参数名字(本 Case 中是 id)对应值改变,将被认为是不同 URL。...上面代码中,用户访问 /router/book ,不会触发第二个路由规则(不会展示“图书”),因为它会匹配 /router/:type 这个规则。因此,带参数路径一般要写在路由规则底部。...但这种情况下 React-Router不能识别的,于是我们写了一个 Plugin 放在 Webpack 中,目的是将各个文件夹下路由汇总,并生成 router-config.js 文件。...Case 3: 在实际项目中,其实我们也会去考虑用户授权时路由跳转、页面 404 路由跳转等不同情况,以下 Case 和代码仅供读者参考~ { getRoutes(match.path

2.8K40

React Router 进阶技巧

本文介绍在工程中经常用到 react-router 技巧: ?️ 如何在 TypeScript 中使用? ?️exact和strict区别? ?️ 如何封装路由配置组件? ?️...有时候会需要使用编程式导航,比如上方导航栏里面选项,响应按钮事件,进行路由跳转。react 做法是通过高阶函数,函数体内部向组件 props 注册一些路由方法,最后返回一个新组件。...为了方便说明,假设路由为/a: 若将exact设置为 true,路由相同(包括有斜杠)即可匹配路由/a可以和/a/、/a匹配。 若将strict设置为 true,路由相同(不包括斜杠)可匹配。...路由/a可以和/a匹配不能和/a/匹配。 两者相比,strict匹配更严格。但一般常将exact设置为 true。 如何封装路由配置组件?...但是在 React 中,react-router 并不提供相关钩子函数。那么如果有顶部导航栏,不同页面切换,高亮不同标签,那么应该怎么实现响应路由变化呢?

2.5K20

React 进阶 - React Router

整个 React-Router 核心,里面包括两种路由模式下改变路由方法,和监听路由变化方法等 React-Router 有了 History 路由监听 / 改变核心,那么需要调度组件负责派发这些路由更新...window.addEventListener("hashchange", function (e) { console.log(e.newURL) }) hash 值改变,就会触发 hashchange...是通过 context 上下文方式传递路由信息 context 改变,会使消费 context 组件更新,触发路由改变,重新渲染匹配组件 props.history 是通过 BrowserRouter...:可以将 childen 作为渲染函数执行,可以传递路由信息,也可以传递父组件信息 exact Route 可以加上 exact ,来进行精确匹配,精确匹配原则,pathname 必须和 Route...Route 进行渲染 通过 Switch 包裹后,那么页面上只会展示一个正确匹配路由 Redirect Redirect 可以在路由匹配情况下跳转指定某一路由,适合路由匹配或权限路由情况 注意

1.8K20

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

你将看到以下主题: 常规路由 为什么需要 React 路由?...对于每个新URL,用户会被重定向到新 HTML 页面。你可以通过参考下图来更好地理解路由工作原理。 ? React Router 为什么需要 React 路由?...每当用户输入新 URL 请求路由不会从服务器获取数据,而是为每个新 URL 请求交换不同 Component。...这是 React Router v4 声明 性质一个例子。 v4 中路由为 inclusive 意味着可以同时呈现多个路由。我们使用 exact 属性来解决多匹配问题。...但是我们希望 '/' 仅匹配我们渲染函数,因此使用 exact 明确地实现了这一点。 4. 路由只能有一个单一子元素: 这就是我们需要在 中包装路由原因。

2K20

React 中一些 Router 必备知识点

在处理 URL ,除了问号带参数方式,React-Router 能帮我们做什么呢?在这其中,Route 组件 path 属性便可用于指定路由匹配规则。...URL 上,此时,参数名字(本 Case 中是 id)对应值改变,将被认为是不同 URL。...上面代码中,用户访问 /router/book ,不会触发第二个路由规则(不会展示“图书”),因为它会匹配 /router/:type 这个规则。因此,带参数路径一般要写在路由规则底部。...但这种情况下 React-Router不能识别的,于是我们写了一个 Plugin 放在 Webpack 中,目的是将各个文件夹下路由汇总,并生成 router-config.js 文件。...Case 3: 在实际项目中,其实我们也会去考虑用户授权时路由跳转、页面 404 路由跳转等不同情况,以下 Case 和代码仅供读者参考~ { getRoutes(match.path

2.6K20

【React】377- 实现 React 中状态自动保存

,因为某些原因需要临时离开交互场景,则需要对状态进行保存 在 React 中,我们通常会使用路由去管理不同页面,而在切换页面路由将会卸载掉匹配页面组件,所以上述列表页例子中,当用户从详情页退回列表页...,我们需要研究如何自动保存状态 通过路由实现自动状态保存(通常使用 react-router) 既然 React 中状态丢失是由于路由切换卸载了组件引起,那可以尝试从路由机制上去入手,改变路由对组件渲染行为...react-router 版本兼容 替换路由库为 react-keeper[5] 完全替换掉路由方案是一个风险较大事情,需要较为慎重地考虑3....都无法避免路由在不匹配被卸载掉命运 但将 children 属性当作方法来使用,我们就有手动控制渲染行为可能,关键代码在此处 https://github.com/ReactTraining/react-router...,在需要处理数据量较少时,使用手动状态缓存就可以解决大多数问题,但情况复杂,还需要尝试将缓存功能单独拎出来解决,以便在业务开发过程中更好地进行关注点分离 目前实现都有各自问题,但其探究过程十分有趣

2.8K30
领券