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

Compose 封装 - 点击防抖

一、概念

简单场景(如登录按钮)使用标记,实现成本低。定义一个布尔状态 isLoading,业务代码开始时若为 true 则直接return,在成功后或finally中设为 false。
搜索框延迟执行。
需立即反馈一段时间内只执行一次。

二、基于时长

2.1 封装为Modifier

/** * 双击防抖 */ fun Modifier.clickableDebounce( duration: Long = 5000L, onClick: () -> Unit ) = composed { var lastClick by remember { mutableLongStateOf(0L) } this.then( Modifier.clickable( onClick = { val currentTime = System.currentTimeMillis() if (currentTime - lastClick >= duration) { onClick() lastClick = currentTime } }, interactionSource = remember { MutableInteractionSource() }, indication = null ) ) }

2.2 封装为函数

适用于自带点击回调的组件如Button。

/** * 双击防抖(适用于自带点击回调的组件如Button) */ inline fun onClickDebounce ( lastClickTime: Long, onLastClickTimeChange: (Long) -> Unit, duration: Long = 5000L, onClick: () -> Unit, ) { val currentTime = System.currentTimeMillis() if (currentTime - lastClickTime >= duration) { onLastClickTimeChange(currentTime) onClick() } }
http://www.jsqmd.com/news/183660/

相关文章:

  • Java开发者必看:抗量子加密性能优化的8个关键步骤
  • 学长亲荐!10个AI论文网站测评,本科生毕业论文必备
  • 【课程设计/毕业设计】基于人工智能 ISIC数据集的皮肤病黑色素瘤分类研究与实现
  • 【毕业设计】基于机器学习+深度学习的二手车价格预测及应用实现
  • 深度学习毕设选题推荐:基于双分支残差结构的 人工智能低光照图像增强研究与应用实现
  • 深度学习毕设选题推荐:人工智能 基于ISIC数据集的皮肤病黑色素瘤分类研究与实现
  • 完整教程:面试直击:大模型对齐中RLHF与DPO的核心差异,为何DPO成主流替代?
  • 深度学习计算机毕设之基于机器学习的肝病患者智能诊断及系统实现
  • 【毕业设计】基于深度学习的肝病患者智能诊断及系统实现
  • 提示工程日志聚合分析从0到落地:架构师的实战经验分享
  • 12. 图像金字塔
  • HTML5 MathML:深入解析数学标记语言在HTML5中的应用
  • 深度学习计算机毕设之机器学习 基于ISIC数据集的皮肤病黑色素瘤分类研究与实现
  • JSON格式混乱怎么办,一文解决Python中所有美化难题
  • JSON格式混乱怎么办,一文解决Python中所有美化难题
  • UID和UUID分别是什么?盘点生成UID的n种技巧
  • MCP Registry v1.4.0 最新进展
  • 【课程设计/毕业设计】基于深度学习的二手车价格预测及应用实现
  • Ruby 类和对象
  • 【课程设计/毕业设计】基于深度学习的二手车价格预测及应用实现
  • 深度学习毕设项目推荐-基于人工智能 ISIC数据集的皮肤病黑色素瘤分类研究与实现
  • 2026.1.2日22:31-prodigal浪费的
  • SQL优化实战:从索引策略到查询性能飙升的终极指南
  • 【课程设计/毕业设计】基于人工智能的肝病患者智能诊断及系统实现
  • 深度学习毕设项目:基于深度学习+机器学习的二手车价格预测及应用实现
  • 深入理解IAsyncEnumerable:.NET中的异步迭代利器 - 教程
  • 一个独立开发者的年终坦白:我的软件,全是“缺点”
  • 从贝叶斯视角解读Transformer的内部几何:mHC的流形约束与大模型训练稳定性
  • 深度学习计算机毕设之基于人工智能+机器学习的二手车价格预测及应用实现
  • 别藏了!你的缺点,才是打造个人IP最硬的通货