自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(489)
  • 收藏
  • 关注

原创 React19源码系列之Hooks(useState)

useState的使用以及源码分析

2025-06-15 23:00:00 879

原创 React19源码系列之 事件插件系统

React 合成事件之事件插件系统

2025-06-10 23:30:00 903

原创 React19源码系列之 事件优先级

React合成事件之事件优先级模型

2025-06-10 23:30:00 859 1

原创 React19源码系列之合成事件机制

react合成事件机制

2025-06-10 23:00:00 989

原创 clsx源码阅读

地址:[https://github.com/lukeed/clsx/blob/master/src/index.js](https://github.com/lukeed/clsx/blob/master/src/index.js)上面代码中,别名`.`的`require`条件指定`require()`命令的入口文件(即 `CommonJS` 的入口),`default`条件指定其他情况的入口(即 `ES6` 的入口)。//default条件指定其他情况的入口(即 ES6 的入口)。

2025-05-24 23:00:00 710

原创 React19源码系列之渲染阶段performUnitOfWork

react渲染阶段。

2025-05-21 22:00:00 1093

原创 React19源码系列之 Diff算法

React的diff算法。

2025-05-15 23:00:00 1358 1

原创 React19源码系列之 API(react-dom)

react-dom包中API

2025-05-13 23:00:00 1776

原创 React19源码系列之 root.render过程

root.render执行过程

2025-04-27 18:24:23 582

原创 React19源码阅读之commitRoot

在 React 中,副作用钩子可能会返回一个清理函数,用于在组件卸载时进行资源释放、取消订阅等操作,该函数就是负责调用这些清理函数的。函数是 React 渲染流程中用于提交根节点的核心函数,它负责将渲染阶段生成的结果应用到实际的 DOM 上,并执行相关的副作用操作。节点及其关联的资源,确保内存释放和旧节点引用断开。函数来实际执行这些副作用,并在执行前后进行状态的保存和恢复,确保操作的正确性和状态的一致性。节点,逐个清理节点及其关联资源,并且在遍历过程中根据节点的兄弟节点和父节点信息进行路径回溯。

2025-04-24 18:55:32 809

原创 React19源码系列之Hooks(useRef)

useRef的使用与分析

2025-03-28 14:27:33 540

原创 js关于for of 与for in

for...in 与for..of

2025-03-28 14:17:11 284

原创 React19源码系列之Hooks(useId)

useId的使用及其原理

2025-03-18 19:33:08 991

原创 React19源码系列之FiberRoot节点和Fiber节点

fiberRoot节点和fiber节点结构

2025-03-14 14:40:20 721

原创 React19源码系列之createRoot的执行流程是怎么的?

2024年12月5日,react发布了react19版本。后面一段时间都将学习它的源码,并着手记录。react官网:react19新特性在用vite创建react项目的使用,main.ts主文件都会有以下代码。该代码是整个项目的入口。接下来我们就看看是如何执行。

2025-03-14 14:15:59 1153

原创 umi4项目提交css样式display: -webkit-box会被修改为display: box问题解决

提交代码时,会被修改为直接提交。原因是文件中存在配置报错这是因为禁止值使用浏览器前缀。查看:https://stylelint.io/user-guide/rules/value-no-vendor-prefix/: 禁止值添加供应商前缀解决的一些其他配置。

2024-07-18 20:26:35 550

原创 利用node连接mongodb实现一个小型后端服务系统demo

node 版本 16.16.0node 版本 18.16.0 会连接 MongoDB 数据库错误。项目安装 MongoDB 的 node 版本要跟启动时的 node 版本一致,否则会报错${

2024-07-05 21:10:15 691

原创 clsx源码阅读分析

版本 2.1.1一个处理类名的函数。

2024-07-05 20:55:37 462

原创 axios源码打包关于rollup.config.js文件分析

标签引入,对组件库或框架库来说,解决了以前一套代码无法多端使用的难题。是一种常见的模块导出模式,尤其在 CommonJS 环境中。这种模式通常用于将模块的内部函数或对象导出,以便在模块外部使用。通常是一个返回特定对象或函数的表达式,该对象或函数随后被赋值给。只适用于浏览器,虽然也支持。,但不如 Node 自家的。的结合体,同时还兼容了。// 执行axios。一个 JS 文件中,// 执行axios。

2024-06-29 11:40:13 638

原创 package.json配置详解

文件中需要什么的所有信息。这个文档是你需要知道的关于你的。命令,会在当前目录生成一个。

2024-06-28 21:44:04 436

原创 fetch-jsonp源码阅读

源码地址:https://github.com/camsong/fetch-jsonpjsonp优势请求数据没有跨域的限制,后台不用考虑跨域问题对于老版本浏览器更加支持jsonp缺陷。

2024-06-28 21:12:28 625

原创 umi3项目axios 请求参数序列化参数

利用参数paramsSerializer,传递一个参数处理函数。请求中有一个日期参数。

2024-06-28 21:07:28 420

原创 umi4 中断请求

主要是利用 axios 的 CancelToken。

2024-06-19 18:19:29 378

原创 umi4 项目打包后文件样式优先级错乱

实际情况,页面样式和组件库样式,均被打入一个 chunk 包,且组件库优先级更高,覆盖掉了页面样式。打包dist 利用nginx部署(异常)按照预期,页面样式需要覆盖掉组件库样式。问题“组件库的样式优先级会比自定义的。本地开发环境(正常)

2024-06-13 18:31:47 501

原创 Git:远程仓库名称变更本地无法提交解决

提示:您有偏离的分支,需要指定如何调和它们。拉取代码报错,存在偏差分支。

2024-04-17 20:34:10 641

原创 copy-to-clipboard源码解读(含有toggle-selection源码以及navigator.clipboard的使用)

copy-to-clipboard源码解读、toggle-selection源码、navigator.clipboard的使用

2024-03-23 13:48:56 1556

原创 resize-observer源码解读

node 18.16.0 (npm 9.5.1) 启动失败报错。node 16.16.0 (npm 8.11.0) 启动成功。是一个数组,返回所有正在活跃的目标element列表。监听 elementRef.current 的變化。里面还有一层组件SingleObserver。真正组件在ResizeObserver组件。在 SingleObserver 组件。真正实现观察的方法在这个组件。解决:更改 node 版本。

2024-03-19 19:54:51 810

原创 resize-observer-polyfill 源码解读之 ResizeObserverController

这个是个单例的控制器或者叫调度器。所有的归它管理,或者说归它管。它是调度器,它会检测 DOM 上面的变化,通过或者事件(如果前者不支持的话), 同时它还订阅了事件,它只关心这些css属性的变化。"top","right","bottom","left","width","height","size","weight",当这些事件被促发的时候,它就会迭代内部的 SPI 数组,调用它们的过滤出变化的 SPI,然后对于迭代变化的 SPI,依次调用它们的方法。/***/

2024-03-18 12:01:51 546

原创 resize-observer-polyfill 源码解读之 ResizeObserverSPI

这个是真正提供观察某个元素功能的地方,SPI应该是的简称。它是那三个接口真正提供功能的地方。它提供了如下的方法, 开始观察某个html元素,该元素以的形态保存于内部的一个Map里面。, 停止观察某个html元素停止观察所有的 html 元素。轮询内部的,调用它的isActive()方法,发现更新了元素,存放于内部的数组中轮询内部的,调用它的,更新最新值。同时调用callback通知观察者更新。返回当前是否存在更新的元素。清除更新的元素数组。。//存在更新的被观察目标元素。

2024-03-15 12:39:12 691

原创 git修改最新commit提交说明

进入编辑模式,修改为想要的备注;2.找到上次提交的备注,按。1.进入上次提交的记录。

2024-03-14 22:19:17 642

原创 resize-observer-polyfill源码解读之ResizeObservation

这个类是被观察的元素的封装, 它会保存元素上一次的宽高信息,提供了两个方法isActive()与元素之前的宽高进行比较,如果不同则返回 true,这样就指定这个元素更新了。这个是用当前的值更新上一次的值。target;// element的content宽度//element的content高度// element的padding-left padding-top width height/*** 创建ResizeObservation实例*//**

2024-03-14 18:13:01 1373

原创 antd5 虚拟列表原理(rc-virtual-list)

rc-virtual-list 版本 3.11.4(2024-02-01)版本:virtual-list-3.11.4。

2024-03-13 18:07:25 3740

原创 antd5 上传图片支持裁剪处理和预览图片(antd-img-crop)

利用Upload组件的openFileDialogOnClick属性。

2024-03-07 18:08:30 1804

原创 react 组件初始化获取 dom.offsetWidth 为 0 问题

初始化,dom.offsetWidth 确实为 0.

2024-03-06 13:15:14 587

原创 umi4 项目使用umi-plugin-keep-alive缓存页面(react-activation)

按 name 卸载缓存状态下的 节点,name 可选类型为 String 或 RegExp,注意,仅卸载命中 的第一层内容,不会卸载 中嵌套的、未命中的。按 name 刷新缓存状态下的 节点,name 可选类型为 String 或 RegExp,注意,仅刷新命中 的第一层内容,不会刷新 中嵌套的、未命中的。按 name 卸载缓存状态下的 节点,name 可选类型为 String 或 RegExp,将卸载命中 的所有内容,包括 中嵌套的所有。true: 卸载时缓存。获取所有缓存中的节点。

2024-03-06 12:54:27 4567 4

原创 antd5实体dnd-kit/sortable 实现简单table拖拽排序

DndContent组件Props。

2024-03-01 13:10:24 2192 3

原创 Git 将dev1.0分支的某些commit合并到dev分支上

GIT合并某些提交

2024-02-29 13:11:21 524

原创 react项目中使用video标签设置自动播放并未及时播放解决

react项目中使用video标签设置autoplay,但是视频不会直接播放,会加载一段时间后才会自动播放。手动调用play方法。

2023-12-05 20:28:23 1266

原创 前端开发项目中使用字体库

前端项目中使用字体库

2023-11-11 15:54:19 1117

原创 js将图片文件转为base64格式

重要提示:FileReader 仅用于以安全的方式从用户(远程)系统读取文件内容 它不能用于从文件系统中按路径名简单地读取文件。要在 JavaScript 中按路径名读取文件,应使用标准 Ajax 解决方案进行服务器端文件读取,如果读取跨域,则使用 CORS 权限。元素上选择文件后返回的FileList对象,也可以来自拖放操作生成的 DataTransfer对象,还可以是来自在一个。对象允许 Web 应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用。对象指定要读取的文件或数据。

2023-11-10 20:34:22 1122

React19源码解析之commitRoot函数:深入理解React渲染流程与根节点提交机制

内容概要:本文详细解析了React 19中`commitRoot`函数的工作流程及其内部关键函数的作用。`commitRoot`是React渲染流程中提交根节点的核心函数,主要负责设置优先级和状态,然后调用`commitRootImpl`来执行具体的提交操作。`commitRootImpl`则进一步负责更新DOM、执行副作用(如`useEffect`、`useLayoutEffect`等钩子函数)以及清理和重置状态。文章还深入探讨了处理被动副作用的`flushPassiveEffects`函数,该函数会递归遍历Fiber树,执行被动卸载副作用,并清理已删除子树中的Fiber节点以避免内存泄漏。此外,文中介绍了与事件优先级和车道管理相关的工具函数,如`lanesToEventPriority`、`mergeLanes`等,这些函数帮助React高效地管理不同优先级的任务。 适合人群:具备一定React基础知识,尤其是对React源码和渲染机制感兴趣的前端开发人员。 使用场景及目标:①理解React 19中`commitRoot`函数的具体实现细节;②掌握如何通过源码分析提高React应用的性能;③学习React内部如何管理不同优先级的任务和副作用。 其他说明:阅读本文时,建议读者结合React的官方文档和其他相关资源,以便更好地理解文中提到的技术细节和概念。同时,对于复杂的源码部分,可以通过调试工具逐步跟踪代码执行过程,加深对React内部机制的理解。

2025-04-24

react-devtools(4.28.0)

chrome浏览器安装react devtools

2025-03-24

resize-observer-polyfill源码分析

1、ResizeObserver类实现 2、ResizeObservation类实现 3、ResizeObserverSPI 类 4、ResizeObserverEntry类 5、ResizeObserverController类

2024-03-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除