自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 React中setState不生效的问题,以及解决方法

React父子组件通信时,由于setState异步特性导致状态更新延迟问题。在商城购物车数量修改场景中,首次加减操作无效是因直接访问旧状态值。解决方法是将父组件回调放在setState的callback中,确保使用最新状态值。示例代码展示了通过回调函数实现子组件修改父组件状态,解决了状态不同步问题。

2025-08-29 18:38:35 463

原创 JS原型链是什么?

JavaScript中的原型链机制通过隐藏属性__proto__实现继承。普通对象a={}的__proto__指向Object.prototype,数组b=[]的__proto__先指向Array.prototype,再通过Array.prototype.__proto__指向Object.prototype,形成原型链。构造函数function A(){}实例化时,a.__proto__指向A.prototype,A.prototype.__proto__指向Object.prototype。这种机制在没

2025-08-06 10:30:00 255

原创 浅谈JS垃圾回收机制

本文介绍了JavaScript中的垃圾回收机制。垃圾指不再使用的变量、函数或对象(如已执行函数、null值或无法从全局访问的值)。垃圾回收可防止内存占用过多导致程序卡死。主要回收方法有:1)引用计数法(通过引用次数判断,但存在循环引用问题);2)标记清除法(从全局根对象出发标记可达对象,未标记的视为垃圾)。针对标记清除的性能问题,提出了优化方案:分代回收(区分新旧对象)、增量收集(分批处理)和闲时收集(利用CPU空闲时间)。这些方法有效提升了垃圾回收效率,减少对程序运行的影响。

2025-08-05 10:46:19 777

原创 JS 手写深拷贝实现

本文介绍了两种深拷贝实现方式:1)JSON.parse(JSON.stringify())方法存在无法拷贝Date、Function等类型的缺陷;2)递归+类型判断的完整方案。详细展示了第二种方案的代码实现,包括处理函数、数组、日期、正则等特殊类型,通过Map解决循环引用问题,并确保不拷贝原型属性。该方案可扩展,遇到新类型时只需添加相应判断逻辑即可。

2025-08-04 13:15:00 146

原创 手写一个订阅发布

本文实现了一个简单的发布订阅模式类EventSubscribe,通过Map存储事件名和对应的回调函数集合(Set)。主要提供了on、emit、off和once四个方法:on用于注册事件监听器,emit触发事件执行所有回调,off移除指定监听器,once注册只执行一次的监听器(内部通过自动移除实现)。示例展示了click事件的监听、触发和移除过程,验证了once方法只执行一次的特性。该实现利用ES6的Map、Set和Reflect等特性,简洁高效地完成了事件订阅发布的核心功能。

2025-08-03 13:00:00 152

原创 浅析防抖节流(节流篇)

本文介绍了节流函数在项目中的实际应用,重点针对高频点击场景(如抢购)进行优化。作者首先展示了一个基础版节流实现,固定3秒间隔限制请求频率。随后提出改进方案:通过记录上次执行时间,结合剩余时间判断是立即执行还是延迟执行,并在服务器响应后立即重置节流状态。改进后的版本能根据服务器响应动态调整,避免不必要的等待时间,同时保持防抖效果。文中提供了完整的代码示例和运行效果说明,展示了如何实现更智能的请求频率控制。

2025-08-02 17:53:22 197

原创 浅析一下防抖和节流(防抖篇)

本文介绍了防抖(debounce)的概念及其在input输入框、tabs切换等场景的应用,通过减少无效执行提升性能。文章详细展示了防抖函数的实现代码,比较了不同实现方式的区别,指出箭头函数自动绑定外层this的特性,并建议通过参数传递this更合理。同时提到防抖函数构成闭包,但只有不当使用才会导致内存泄漏。最后作者分享了个人心得,欢迎读者交流指正。

2025-08-01 21:47:53 191

原创 JS的new到底做了什么?

摘要:本文通过代码示例解析了JavaScript中new操作符的工作原理:1)创建一个临时对象;2)将临时对象的__proto__指向构造函数的prototype;3)返回该临时对象。同时解释了为何要通过Person.prototype添加方法而非直接赋值,以避免丢失constructor属性。文章还指出方法定义应避免使用箭头函数,以确保正确绑定this。最后展示了等价于new操作的手动实现过程。

2025-07-31 18:07:53 301

原创 uniapp 用基础组件picker 实现 省市区功能

本文介绍了如何实现省市区三级联动选择器的前后端交互方案。前端通过递归格式化服务器返回的树形结构地址数据,将其转换为包含value、label和pid的二维对象数组。使用picker组件实现三级联动,通过pid关联各级数据,在用户选择省份时动态筛选对应的城市和区县。文章详细说明了数据格式转换、picker组件配置、默认值设置以及联动逻辑处理等关键步骤,并提供了Vue3 Composition API的实现代码。该方案可灵活适配不同框架,满足H5和App端的地址选择需求。

2025-07-30 10:18:37 1566

原创 自定义组件 tabs标签

本文介绍了在uni-app项目中实现自定义tabs组件的开发过程。由于内置组件和uni-ui扩展组件均未提供tabs功能,作者通过创建自定义组件的方式解决了这一问题。组件采用vue3的script setup语法,实现了tab切换、高亮显示和底部指示器动画效果。组件支持自定义颜色、宽度等样式,并通过props传入数据数组和初始选中项。文章详细说明了组件结构、实现逻辑和使用方法,并指出后续可优化的方向,如添加滑动功能和角标等。该方案避免了引入大型组件库,为项目提供了一种轻量级的tabs解决方案。

2025-07-29 11:51:16 1023

原创 {“errMsg“:“setTabBarBadge:fail not TabBar page“}

摘要:针对购物车TabBar角标动态更新问题,发现uni.setTabBarBadge方法只能在TabBar页面调用。解决方案:1)在TabBar页面的onShow生命周期调用;2)使用Pinia管理购物车状态;3)定义混入方法复用逻辑;4)在购物车删除操作后同步更新角标。通过状态管理和生命周期控制,实现了跨页面角标实时更新。

2025-07-29 11:28:36 819

空空如也

空空如也

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

TA关注的人

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