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

极简 useState:手写 20 行,支持多次 setState 合并

不依赖 React,用 闭包 + 批处理队列 实现可合并更新的 useState


一、20 行完整代码

function createUseState(initialValue) {let state = initialValue;let pending = null;              // 合并队列let listeners = [];const flush = () => {if (pending !== null) {state = pending(state);pending = null;listeners.forEach(fn => fn(state));}};const useState = (value) => {if (arguments.length) state = value; // 初始化return [state,(updater) => {// 合并更新:函数或值pending = typeof updater === 'function'? (prev) => updater(prev): () => updater;Promise.resolve().then(flush); // 微任务批处理}];};useState.subscribe = (fn) => listeners.push(fn);return useState;
}

二、使用示例

const [count, setCount] = createUseState(0);setCount(c => c + 1);
setCount(c => c + 2); // 合并执行,state 变为 3
console.log(count);   // 3

三、一句话总结

20 行闭包 + 微任务批处理,让多次 setState 合并为一次更新。

http://www.dtcms.com/a/351100.html

相关文章:

  • 常用Nginx正则匹配规则
  • HTML的form表单
  • 状态模式与几个经典的C++例子
  • 《分布式任务调度中“任务重复执行”的隐性诱因与根治方案》
  • 记一次clickhouse查询优化之惰性物化
  • 手机移动代理IP:使用、配置、维护的10问10答
  • 通义灵码插件——AI 重构表单开发!半小时搭建可视化拖拽系统,效率碾压传统模式
  • 如何了解云手机的兼容性?
  • TikTok广告投放革命:指纹云手机如何实现智能群控与降本增效
  • 云手机和模拟器之间的区别
  • Windows下的异步IO通知模型
  • Tomcat下载历史版本
  • 深入浅出理解支持向量机(SVM):从原理到实践
  • 支持向量机(SVM)核心笔记
  • 人类记忆如何启发AI?LLM记忆机制综述解读
  • Vue中的props方式
  • SELinux存在于过去的Linux安全增强模块
  • 可解释的多尺度深度学习在胸腔积液细胞块与细胞学涂片恶性肿瘤检测及侵袭性子宫内膜癌识别中的应用|文献速递-深度学习人工智能医疗图像
  • 6年前抄写的某品牌集成灶-蒸汽炉
  • UCIE Specification详解(七)
  • Linux文件系统深入解析:从原理到实践
  • 校园跑腿小程序源码 | 跑腿便利店小程序(源码下载)
  • Nginx访问限制学习笔记
  • 智慧AI消防通道占用检测在危险区域的应用
  • 数据结构青铜到王者第五话---LinkedList与链表(2)
  • 懂支持向量机(SVM):从原理到实战拆解
  • 算法-每日一题(DAY15)用队列实现栈
  • SQLBot 智能问数、数据洞察逻辑拆解
  • 【GM3568JHF】FPGA+ARM异构开发板 应用编辑及源码下载
  • 零基础也能照做的WordPress网站安全漏洞修复 + 高级优化保姆级教程。