当前位置: 首页 > news >正文

React Switch用法及手写Switch实现


问:如果注册的路由特别多,找到一个匹配项以后还会一直往下找,我们想让react找到一个匹配项以后不再继续了,怎么处理?
答:<Switch>独特之处在于它只绘制子元素中第一个匹配的路由元素。
如果没有<Switch>,直接使用一堆<Route>,则每个与当前路径匹配的<Route>都会被绘制

switch 作用


通常情况下,path和component是一一对应的
Switch可以提高路由匹配效率(单一匹配,谁在前面,先匹配谁)
<Switch>独特之处在于它只绘制子元素中第一个匹配的路由元素。
如果没有<Switch>,直接使用一堆<Route>,则每个与当前路径匹配的<Route>都会被绘制

Switch 使用方法:

Switch 手写代码实现

import React from 'react';
import matchPath from './matchPath';
import RouterContext from './RouterContext';
class Switch  extends React.Component{static contextType = RouterContext;render(){const {location} = this.context;let element,match;React.Children.forEach(this.props.children,route=>{//一旦有一个匹配了,后面的就不再匹配了if(!match && React.isValidElement(route)){element = route;match = matchPath(location.pathname,route.props);}});return match?React.cloneElement(element,{computedMatch:match}):null;}
}
export default Switch;

http://www.lryc.cn/news/307528.html

相关文章:

  • PowerShell执行策略:确保脚本安全执行的关键
  • LeetCode 热题 100 | 图论(上)
  • 跟着cherno手搓游戏引擎【25】封装2DRenderer,封装shader传参,自定义Texture
  • 多个值时 if [ -z 报错 binary operator expected
  • 如何使用ChatGPT创建一份优质简历
  • k8s(6)
  • 自动驾驶框架:自动驾驶汽车定位-感知-规划-决策-控制概述,按照我的架构图理解:决策决定的是速度,规划决定的是路径(架构理解推荐)
  • Gemma
  • 淘宝关键词搜索API、搜索商品接口、商品价格监控
  • vue实现水印功能
  • 记录一下我的Ruby On Rails的systemd服务脚本
  • 【计算机网络】传输层——TCP和UDP详解
  • stm32和嵌入式linux可以同步学习吗?
  • maven--->maven中的<properties>属性有什么作用?
  • android 网络请求总结
  • 用 Python 自动化处理无聊的事情
  • 稀疏计算、彩票假说、MoE、SparseGPT
  • Git Windows安装教程
  • iOS高级理论:Runtime应用
  • php判断和过滤get或者post的html标签,防止跨站点脚本(XSS),链接注入,框架注入等攻击
  • PySide6实现课堂点名程序
  • 瑞_Redis_Redis命令
  • js 算法题 在数组中找出和为目标值 target 的那 两个 整数,并返回它们的数组下标
  • 基于springboot接口的编写
  • 【HarmonyOS】鸿蒙开发之Video组件——第3.7章
  • React引入css的几种方式以及应用
  • [算法沉淀记录] 排序算法 —— 冒泡排序
  • 【机器人最短路径规划问题(栅格地图)】基于遗传算法求解
  • 如何做代币分析:以 TRX 币为例
  • 关于地址引用与值引用的坑