自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(456)
  • 问答 (1)
  • 收藏
  • 关注

原创 ReactNative Expo 使用总结(基础)

本文系统总结了React Native开发中的核心知识点,包括路由、样式、组件和动画等关键内容。在路由方面,详细介绍了Expo基于文件的路由框架及其配置方法。样式部分对比了StyleSheet和Styled Components的优缺点,并提供了样式管理的最佳实践。组件章节全面解析了View、Text、ScrollView等基础组件,以及列表、模态框等复杂组件的使用方法。动画部分重点讲解了原生Animated和Reanimated库的使用技巧。此外,还涵盖了第三方常用组件(如WebView、手势处理)、图标

2025-12-05 20:38:26 1112 2

原创 electron typescript运行并设置eslint检测

使用main.js作为入口文件时,我们只要找到main.js路径配置到package.json的“main”位置就行了,但直接改.ts肯定会报错,所以我们需要让electron找到main.ts编译后转的.js文件的位置。终端运行:你会看到项目的ts文件被转为js文件存到了“outDir”指向的文件夹里(这里是".electron")我的:这里的"main"没太大影响,看后面的步骤。终端运行:可以看到electron程序正常启动了。即可进行eslint纠正检测。3、安装eslint。五、配置eslint。

2025-01-28 20:46:08 1983

原创 SpringCloud Gateway Netty Websocket实现高性能聊天系统集群方案

当用户在不同Netty服务器上时(此时发送与接收者都在线),我会先让服务器去Redis获取对应用户名的ChannelId,先在本地服务器中查找,若查询到该ChannelId的Channel则直接转发,否则为不在同一个Netty服务器上,发送Channel寻找的信号到MQ进行广播,其他服务器获取到广播后查询直接是否有该ChannelId的Channel,若有则转发;有了这样的对象以后,我便可对发送过来的消息进行序列化与反序列化获取数据,通过消息对象中的数据是否正确与是否认证来决定消息的转发。

2023-03-01 15:33:01 3323 7

原创 TanStack Query(React Query) 常用api及操作总结

本文总结了React Query的常用API及操作技巧,涵盖数据查询、修改、缓存管理等核心功能。主要内容包括:1. 常用API分类介绍(查询Hook、修改Hook、缓存管理方法);2. 典型操作场景(基础/分页查询、乐观更新、批量操作);3. 优化技巧(防抖查询、依赖查询);4. 全局配置与请求取消;5. 实战示例(表单提交、分页列表);6. 最佳实践(查询键设计、缓存策略等)。文章提供了详细的代码示例,帮助开发者高效处理React应用中的数据交互需求。

2025-12-21 20:00:21 313

原创 TailWindCss 核心功能总结

TailwindCSS是一款实用优先的原子化CSS框架,通过预定义类名组合快速构建界面,显著提升开发效率。其核心优势包括:实用类直接内联HTML减少样式文件切换、内置响应式设计系统、自动优化的生产包体积(<10KB)。特别适合Web应用开发,已被ChatGPT、Vercel等AI产品采用。提供完善的文档和IDE插件支持,支持自定义主题配置(通过tailwind.config.js)和动态类名管理。虽然学习初期需记忆类名,但通过组件化封装可保持代码整洁。在AI时代因其开发速度和一致性优势,成为现代前端开

2025-12-21 17:43:01 1187

原创 TanStack Query(React Query) 使用总结

React Query(现称TanStack Query)是一个专注于数据获取、缓存和状态管理的React库,通过简化异步逻辑处理提升开发效率。核心功能包括自动化加载/错误处理、智能缓存和声明式Hooks。安装步骤包括创建QueryClient实例、使用Provider包裹应用组件,并通过useQuery发起请求。关键概念如useQuery(用于GET请求)和useMutation(用于增删改操作)提供了数据管理和缓存控制能力。支持全局配置缓存时间(gcTime/staleTime)和灵活的失效策略(主动失

2025-12-14 21:31:49 892

原创 React useMemo和redux createSelector的区别

createSelector与useMemo都是记忆化工具,但适用场景不同。createSelector用于Redux状态派生数据(全局缓存),当输入选择器结果变化时重新计算;useMemo用于组件内部基于props/state的昂贵计算(组件级缓存)。主要区别在于:createSelector面向Redux store数据,支持浅比较;useMemo面向组件数据,基于引用比较。建议组合使用:用createSelector处理Redux数据转换,再用useMemo优化组件内派生数据。典型用例:createS

2025-11-10 16:41:14 421

转载 React Jest单元测试

React单元测试快速指南:介绍React组件测试的基本方法,包括Jest和React Testing Library的使用。涵盖测试渲染、交互模拟和断言验证等核心技巧,适合初学者快速上手。另附详细教程链接,供深入学习和实践参考。

2025-11-07 14:40:00 63

原创 taro UI 的icon和自定义iconfont的icon冲突

摘要:Taro项目同时使用TaroUI和阿里iconfont时出现图标冲突问题。原因是两者font-family名称相同导致图标未正确显示。解决方案是将iconfont.css中的font-family修改为其他名称,避免命名冲突。该方案有效解决了TaroUI组件与阿里图标库的兼容性问题。

2025-11-05 15:14:57 216

原创 Taro 自定义tab栏和自定义导航栏

本文介绍了在Taro小程序中实现自定义TabBar和导航栏的优化方案。文章首先分析了官方方法的不足:无法使用项目自带的iconfont库、每次切换会重新渲染TabBar等问题,提出了基于组件化的实现方案。通过高级组件(HOC)封装页面组件实现公共布局,利用Redux管理TabBar状态,并详细展示了自定义TabBar和导航栏的代码实现。最后总结了关键点:组件化实现更自由、通过HOC解决公共组件渲染问题、Redux状态管理实现Tab切换同步。该方案解决了官方方法的局限性,提供了更灵活高效的自定义导航实现方式。

2025-10-28 11:58:08 590

原创 React 判断组件是否在视图区域的钩子函数

本文介绍了一个React自定义Hook useInView,用于检测组件是否在可视区域内。该Hook基于IntersectionObserver API实现,支持配置触发阈值(默认10%可见)、边界偏移、根元素等参数,并提供单次触发选项。使用方法简单,只需将返回的ref绑定到目标元素,即可通过isInView状态判断可见性。适用于懒加载、动画过渡等场景

2025-09-17 11:32:05 218

原创 React state在setInterval里未获取最新值的问题

React中在setInterval/setTimeout内使用setState时会出现状态值过时问题,这是由闭包导致的。解决方案有两种:1)使用函数式更新setCount(prev=>prev+1)获取最新状态;2)通过useRef保存状态值,在useEffect中同步更新ref.current,在定时器中通过ref获取最新值。这两种方法都能有效解决定时器中状态更新不及时的问题。

2025-09-08 10:37:10 283

原创 前端 下载后端返回的二进制excel数据

前端下载Excel文件方案:通过创建隐藏的a标签,将后端返回的二进制数据转换为Blob对象,设置type为application/vnd.ms-excel,生成下载链接后模拟点击触发下载。自动生成包含日期时间戳的文件名,下载完成后移除创建的DOM元素。该方法无需依赖第三方库,兼容性好,适用于各种浏览器环境下的Excel文件下载需求。

2025-08-20 11:17:37 330

转载 Mybatis 多个参数写paramType

mybatis parameterType 传入多个参数的使用 - CharyGao - 博客园

2025-07-09 14:27:59 63

原创 Taro 安全区域

针对顶部刘海区和底部小黑条两个常见问题,推荐使用Taro.getSystemInfoSync()方法获取设备信息。顶部通过safeAera.top获取刘海高度设置paddingTop,底部通过计算screenHeight与safeAera.bottom的差值确定小黑条区域。该方案兼容性好,能有效避免内容被遮挡的问题。

2025-05-21 16:36:43 1026

原创 Taro Error: chunk common [mini-css-extract-plugin]

在Taro项目中,编译时可能会遇到mini-css-extract-plugin插件抛出的CSS顺序冲突警告。这种警告通常是由于项目中不同组件引用的CSS文件顺序不一致导致的。解决方案:1、将示例中 1、2 两个引用的顺序保持一致即可编译成功。2、直接修改/config/index.ts的配置。

2025-05-21 14:28:06 1043

原创 taro 小程序 CoverImage Image src无法显示图片的问题

[渲染层网络层错误] Failed to load local image resource /assets/icon/message.png  the server responded with a status of 500 (HTTP/1.1 500 Internal Server Error)

2025-05-20 14:27:06 722

原创 TaroUI AtInput等组件无法正常使用的解决方案

taroUI AtInput 微信开发者工具打印警告 WXMLRT_$gwx:./base.wxml:template:180:18: Template `tmpl_0_35` not found.

2025-05-14 10:43:50 492 2

原创 Antd Upload组件连续回车会多次触发文件夹弹窗的bug修复

思路就是禁用enter快捷键,让upload组件的enter触发失效,这样就可以规避掉这个问题。刚又到Antd官网测试一下这个bug,依然存在。

2025-04-30 18:51:22 330

原创 Springboot 手搓 后端 滑块验证码生成

2、验证码生成服务,生成唯一的标识uuid(可考虑雪花算法生成),将生成图片生成后得到的位置信息即x(非登高拼图x和y)记录到缓存中,建议使用redis存储,即使分布式也能使用;1、后端需要生成对应的两个图片(拼图图片和拼图背景图片,图片内存尽量小一点)和对应位置(x和y, 等高拼图只需要记录x即可);通过 圆的标准方程 (x-a)²+(y-b)²=r²,标识圆心(a,b),半径为r的圆,>=的在外侧,<的内侧。接下来继续手搓旋转验证码前后端。

2025-04-25 19:16:38 2173

原创 前端 React 弹窗式 滑动验证码实现

前端 React 弹窗式 滑动验证码实现

2025-04-15 20:14:30 1164

原创 前端 Overflow hidden与auto切换时页面右移的问题解决 Antd Drawer打开关闭时位置偏移的问题的解决

一的解决方案也是二的解决方案,通过查看Antd Drawer打开时的body样式,我们可以发现,body在Antd Drawer打开时被Antd设置了样式,即“width: calc(100% - 滚动条宽度)”,这就是发生偏移的问题所在,我们只需要确保打开时body的宽度是我们预期的宽度即可解决该问题。这里我们获取到页面全局的滚动条宽度,再将页面宽度设置成一个定值,在条件切换的状态下,页面就不会发生位置变化了。在通过js切换页面全局滚动条状态时,我发现页面随着滚动条的消失与重现发生了位置变化。

2025-03-28 15:34:21 540

原创 ReactNative react-devtools 夜神模拟器连调

这里选择5.3.1版本,因为高版本可能与夜神模拟器无法联动,导致部分功能无法正常使用。在expo程序里点击这里刷新,开启程序页面。在模拟器里,点击侧边“

2025-01-28 14:00:11 1033

原创 Webstorm 配置Eslint ESLint: TypeError: this.libOptions.parse is not a function

Webstorm 配置Eslint ESLint: TypeError: this.libOptions.parse is not a function 解决办法:把 {**/*,*}.{js,ts,jsx,tsx,html,vue}换成 {**/*,*}.(js,ts,jsx,tsx,html,vue)

2025-01-11 23:31:26 334

原创 git 常用命令和本地合并解决冲突

最近,使用mac电脑,无法直接使用小乌龟进行可视化操作,现在记录一些一些常用命令。如果本地没有对应分支,可以使用上面checkout的命令来获取对应分支。

2025-01-05 15:18:13 537

原创 微前端Webpack集成Vite子应用避坑指南

微前端Webpack集成Vite子应用避坑指南。vite-plugin-qiankun: 帮助应用快速接入乾坤的vite插件保留vite构建es模块的优势一键配置,不影响已有的vite配置支持vite开发环境问题描述:子应用有多个root.render页面,用于处理不同的渲染逻辑,直接访问子应用的这些页面,一切正常;但在父应用中访问某些页面时,页面找不到了。经过控制台打印检查,发现子应用根本没有走自定义render页的逻辑,连自定义html里script module也未使用。

2024-12-31 11:28:24 3614

原创 Graph @antv/g6 数据刷新导致的位置和缩放比例问题解决

小伙伴写了个功能,每10s刷新一次页面数据,对graph进行重新渲染,但不巧的是,每次刷新数据graph都会回到初始位置。百度上对此记录也很少,查阅官方文档,发现官方文档的一些方法在当前版本中根本就不存在。于是,我在查阅Graph源码后,找到了如下解决方案。在graph销毁前获取当前graph的zoom和缩放为1的position, 之后,在下次render时先设置缩放为1的position, 最后设置zoom,问题就解决了。3、graph每次渲染时,设置graph上次的状态。

2024-12-17 10:30:11 1044

原创 前端部署 浏览器缓存问题的解决

【代码】前端部署 浏览器缓存问题的解决。

2024-12-08 14:57:20 809

原创 Nextjs 前端设置正向代理 解决 跨域问题

这样配置以后,每次发送请求给“/api/”就会被直接代理到对应域名的地址,而不会出现跨域问题。/api/data 会代理到 域名/api/data 路径下。

2024-12-01 19:53:14 1242

原创 TailwindCss 总结

Width - TailwindCSS中文文档 | TailwindCSS中文网Tailwind CSS 的工作原理是扫描所有 HTML 文件、JavaScript 组件以及任何 模板中的 CSS 类(class)名,然后生成相应的样式代码并写入 到一个静态 CSS 文件中。他快速、灵活、可靠,没有运行时负担。简单的讲就是,我们可以通过直接编辑class里的类名来直接实现想要的效果。

2024-11-26 20:36:02 857

原创 Taro React小程序开发框架 总结

Taro React小程序开发框架 总结

2024-11-25 20:13:09 2456

原创 ReactNative TypeError [ERR_INVALID_CHAR]: Invalid character in header content [“X-React-Native-Proje

react native 异常:TypeError [ERR_INVALID_CHAR]: Invalid character in header content ["X-React-Native-Project-Root"] 检查你的reactNative项目目录路径是否有中文或特殊字符,这是报错的原因。确保项目目录路径没有中文或特殊字符,问题解决!

2024-11-22 21:35:18 612

原创 前端框架 react 性能优化

性能优化三部曲:1、寻找项目中性能损耗严重的子树;2、在子树的根节点使用性能优化API;3、子树中运用变与不变分离原则。总结到此,相信你已经掌握了性能优化的精髓。

2024-11-21 20:54:12 1523 2

原创 前端框架 Redux tool RTK 总结

前端框架 Redux tool RTK 总结

2024-11-21 16:28:35 1639

原创 前端 px、rpx、em、rem、vh、vw计量单位的区别

这里是视窗指的是浏览器内部的可视区域大小,即 window.innerWidth/window.innerHeight 大小,不包含任务栏标题栏以及底部工具栏的浏览器区域大小。2、随着 rem 在众多的浏览器都得到支持,有需要考虑到对多设备,多分辨率的自适应,无疑这时候 rem 是最合适的(如:移动端的开发)。3、在响应式布局中,页面中的所有元素都使用额 em 单位值,em 是一个相对的大小,默认情况下 1em=16px。2、1vh等于视口高度的1%,1vw等于视口宽度的1%。

2024-11-19 10:55:30 1673

原创 前端 JS 浅拷贝与深拷贝

return res} else {age: 18,fn() {obj.fn()obj2.fn()打印:可以看到深拷贝成功了,函数也深拷贝成功了。1、如果是基本数据类型,js都是采用深拷贝的,数据之间不会有任何影响;2、可以通过解构重构或Object.assgin方法来实现浅拷贝;3、深拷贝可以使用实验中的深拷贝递归函数来实现,对于一些没有函数的对象可以实验JSON.parse(JSON.stringify()) 的方法来快速实现深拷贝。总结到此!

2024-11-18 16:26:52 1331

原创 前端框架 详解遍历数组为何需要加Key

key的作用相当于一个ID,只是无法在页面中查看,当设置key以后,在更新渲染比较元素时,就会比较相同key的元素,而不是按照顺序进行比较,在渲染一个列表时,通常给列表每个元素设置一个唯一的key来解决上述问题(这个key在当前列表中唯一即可)

2024-11-17 20:20:00 807

原创 前端 易混淆知识点梳理

JS闭包 严格模式 等常见场景的区分与解析

2024-11-17 16:42:51 1137

原创 前端 JS 实用操作总结

不同在于,find查找到一个选项后,就立即返回停止执行了。这个方法可以用来整合数组,他可以对数组中的值进行计算,最终数组中的所有元素合并为一个值。(4)箭头函数的this,一旦确定后是无法更改的,无法使用call、bind、apply来修改this指向。打印:可以得出箭头函数并没有arguments实参,直接写肯定报错。打印:在严格模式下普通函数在全局中的this为undefined。将obj里的值在新对象中展开,相当于浅拷贝。prev: 上一次运算结果。打印:可以得出:箭头函数。特点:传统函数的简写。

2024-11-15 21:27:24 672

原创 前端 JS面向对象 继承

直接通过class来标注,并且构造函数同一为constructor(), 允许静态方法,添加extends关键字进行继承。这里我不难看出,第一种写法也存在一种问题,两个类型继承同一各方法时,修改的原型对象是同一各个导致一些修改上的问题。由此演进出不会影响修改的更优方案:通过构造函数来实现。

2024-11-12 11:44:56 433

空空如也

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

TA关注的人

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