import { useEffect, useRef, useReducer } from 'react'
const useCallBackReducer = (reducer, initialState) => {
const [state, dispatch] = useReducer(reducer, initialState)
const isUpdate = useRef()
useEffect(() => {
if (isUpdate.current) {
// 不设置回调函数的话 isUpdate.current 是undefined,所以不会执行
isUpdate.current(state)
}
}, [state])
const useDispatch = (action, cb) => {
//劫持dispatch,将回调函数赋予isUpdate.current
//状态更新后会执行回调函数,在回调函数第一个参数可以获取到最新的状态
isUpdate.current = cb
dispatch(action)
}
return [state, useDispatch]
}
export default useCallBackReducer
相关推荐
win10任务栏文件夹设置成竖形列表样式
win10任务栏文件夹设置成竖形列表样式
React useReduce useCallback使用
Reducer横空出世,reduce单词中文意味减少,而reducer我觉得可以翻译为“当你的state的过于复杂时,你就可以使用的可以对state进行整合的工具”。当然这是个玩笑话,个人认为Reducer可以翻译为“整合器”,它的作用就是将那些和同一个state相关的所有函数都整合到一起,方便在组件中进行调用。当然工具都有其使用场景,Reducer也不例外,它只适用于那些比较复杂的state,对于简单的state使用Reducer只能是徒增烦恼。
深入解析时钟同步技术:相位同步、频率同步与同源时钟的实战应用
本文深入解析时钟同步技术的三种核心方式:相位同步、频率同步与同源时钟,详细阐述其技术原理、实现方案及实战应用。通过对比分析不同同步方式的特点与适用场景,为电子系统设计提供选型指南,帮助工程师优化时钟网络设计,提升系统稳定性和性能。
js技巧-使用reduce实现更简洁的数组对象去重和数组扁平化
Array.prototype.reduce()方法介绍: 感性认识reduce累加器: const arr = [1, 2, 3, 4]; const reducer = (accumulator, currentValue) => accumulator + currentValue; console.log(arr.reduce(reducer)); //10,即1 + 2 + 3 +...
Python异步协程爬虫优化:解决aiohttp中ServerDisconnectedError的高效策略
本文深入探讨了在Python异步协程爬虫中使用aiohttp时,如何高效解决常见的ServerDisconnectedError问题。核心策略包括全局复用ClientSession、精细配置TCPConnector连接池、实施请求重试与速率限制,从而构建稳定、高效的异步爬虫架构,有效避免服务器断开连接错误。
深入浅出DNS系列(一)- DNS杂谈
黄丝玛:班达山,你好,我记性不好,你告诉我搜狐、新浪的网站IP地址好吗? 班达山:你问问DNS先生吧,他专门干这买卖的
react hooks
react hooks
elegant(ELEctron Generation ANd Tracking)入门指南(1)
elegant (ELEctron Generation ANd Tracking),美国先进光子源(APS)所用的圆环加速器的模拟程。
React 性能:memo / useMemo / useCallback
讲清 memo/useMemo/useCallback 的配合与边界,先测量再优化,避开常见过早优化。
手把手教你学Simulink——基于Simulink的无感FOC(滑模观测器+PLL)实战
本文详细介绍了基于Simulink的无感FOC(滑模观测器+PLL)实现方法。主要内容包括:1)SMO+PLL原理精讲,阐述滑模观测器核心思想和PLL的作用;2)系统架构全景图展示;3)Simulink建模全流程,从基础FOC框架到SMO和PLL模块的实现;4)关键参数整定指南和工程实践要点;5)仿真结果分析及常见问题解决方案。该方法可有效替代机械传感器,降低成本并提高可靠性,适用于空调压缩机、电动汽车水泵等工业场景。文章还提供了详细的调试建议和动手实践指导。
TenserRt平台SMOKE 3D目标检测部署完整教程:从理论到实践
本教程详细介绍了在RK3588平台上部署SMOKE 3D目标检测模型的完整流程。SMOKE是一种创新的单阶段单目3D检测方法,通过关键点估计直接预测3D目标信息,有效解决了深度信息缺失等挑战。文章从理论基础出发,解析了SMOKE的核心算法和网络架构,包括DLA-34主干网络和关键点中心化策略。同时提供了详细的Docker环境配置、模型导出到ONNX格式的实践指南,以及TensorRT引擎构建和性能优化的关键技术要点。该教程为开发者在嵌入式平台上实现高效3D目标检测提供了完整的技术参考。
React 错误边界 Error Boundary
用类组件 ErrorBoundary 隔离渲染错误,讲清能接住/接不住、重置策略与上报。
亲测解决This application failed to start because no Qt platform plugin could be initialized.
这个问题是由于环境变量改变或者Qt的路径改变导致,解决办法是在环境变量里面重新添加Qt路径。
【SpringAI Alibaba】ReactAgent响应SSE实时流式传输案例实战
SSE 是单向推送(服务器→客户端),无法客户端→服务器实时发送;双向需用 WebSocket。SSE 是 HTML5 标准,服务器向客户端推送事件流,单向通信,适合流式输出场景。流式输出让用户看到 AI "边想边写",首字响应时间大幅降低(通常在 1 秒内)大模型响应通常需要几秒甚至几十秒,如果等全部生成完再返回,用户体验极差。流式输出中发生异常,要及时关闭流并通知客户端,避免客户端永久等待。,否则 SSE 不会实时推送。
RU DOS版、EFI版32bit/64bit BIOS常用工具
DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
React 鉴权路由守卫直觉
用布局路由 + Navigate 做登录拦截和登录回跳,并说明前端守卫不是安全边界。
ET2012新版免狗免安装绿色软件
ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,
我写了一个 Windows 开发环境管理平台:Nexus(Tauri 2 + Rust + React)
文件监听事件很密集。如果节流窗口内的变更直接丢弃,最后一次改动就永远加载不到——所以窗口结束时必须补一轮。只对「失败」重试,不对「启动中」重试。启动慢不代表启动失败,盲目重试只会把健康的服务越搞越糟。Nexus 原本是为了解决自己日常开发里「窗口太多、状态不清、日志找不到」的问题,后来慢慢补成了现在这个样子:项目与服务管理、日志、服务健康、文件与代码查看、文件监听、开机启动、Node 版本管理,以及一个内嵌的 AI 助手。如果你也在 Windows 上同时维护多个服务,欢迎试用。
大中型超市收银系统(可直接运行)
光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开
React Fragment与空标签的终极对比
在React类式组件中,<div>是渲染时必需的外层标签,但可通过Fragment或空标签<></>避免额外DOM节点。Fragment支持传入key,适用于列表遍历场景,而空标签不支持key,且仅允许key属性。两者均可减少冗余标签,提升性能与结构清晰度。
Linux网络学习【Reactor反应堆模式】
本文围绕 Linux 网络编程中的 Reactor 反应堆模式展开,以“事件驱动—组件协作—线程模型—代码实践”为主线,解析事件源、多路复用器、事件分发器与处理器的协作机制,梳理等待就绪、事件分发与回调执行流程,对比单 Reactor 单线程、单 Reactor 多线程及主从 Reactor 的组织方式。结合 epoll 与非阻塞读写,分析事件注册、连接接收、缓冲区管理、部分收发及资源清理,厘清就绪通知与操作完成的区别,讨论耗时任务对事件循环的影响,为构建结构清晰、便于扩展的并发网络服务器提供实践思路。
成为全栈·Vue 管理后台篇·Vue响应式与 React Hooks:同一交互的两种运行模型
本文以同一套管理后台中的文章筛选、分页和权限展示为例,对比 Vue 响应式依赖追踪与 React 组件重新渲染模型。通过 ref、computed、watch 和 useState、useMemo、useEffect,解释两种框架的状态传播、闭包与依赖处理差异,并给出从 React 页面迁移 Vue 时区分本地状态、派生状态、服务器状态和副作用的检查方法。
【C++后端开发项目】Reactor 模型 / C++ 仿写 muduo HTTP 服务器:让底层网络库真正跑起网页
本文是手写 C++ Web 服务器的应用层实战篇。在完成了底层的 Reactor 网络库后,本篇聚焦 HTTP 协议解析。详细拆解了如何利用状态机解决 TCP 半包/粘包难题,实现了基于 std::regex 的动态路由分发、防路径穿越的安全校验以及长短连接保活机制。带你打通从底层字节流到浏览器渲染的最后一公里。
React Context:解决组件间通信难题
Context是React中用于组件间通信的机制,尤其适合祖辈与后代组件间数据传递。它避免了多层props逐级传递的冗余问题。通过createContext()创建上下文,用Provider提供数据,Consumer或contextType读取。类组件可用static contextType,函数组件则使用Consumer。虽功能强大,但实际开发中常被封装好的库(如react-redux)替代,以提升可维护性与复用性。
后端够硬就行?错!用 React/Vue/Next.js 补齐全栈拼图
后端再强,前端体验崩了也白搭。本文以真实项目为镜,揭示后端开发者补全前端能力的五大核心痛点:状态调度误判、并发渲染竞态、加载体验缺失、响应式陷阱与组件边界混淆。通过 React 的函数式更新、并发渲染清理机制,Vue 的 nextTick 与 ref 安全传递,以及 Next.js 服务端组件的架构级优化,提供可直接落地的工程方案。强调“状态生命周期”与“渲染时机”的感知,才是全栈拼图中不可或缺的一块。
从0到1实现三种智能体范式:ReAct、Plan-and-Solve 与 Reflection
本文精读《Hello-Agents》第四章,梳理ReAct、Plan-and-Solve、Reflection三种Agent范式的核心循环逻辑:它们分别在“思考-行动”交替、“规划-执行”分步、“执行-反思”迭代中循环。通过从零实现OpenAI兼容的LLM客户端,揭示框架抽象背后的工程挑战与设计权衡。强调理解循环结构(循环体与终止条件)比记忆代码更重要,帮助读者判断何时选用何种范式,实现从使用者到创造者的跃迁。
Reactor Flux/Mono、SSE 协议格式、背压概念
本工程流式输出(/ai/stream)背后的三个知识点,全部对照工程真实代码讲解。属于 LEARNING_PLAN.md 第 1 周复习要点。
React 全局状态 Zustand
用 Zustand 管理客户端全局状态,讲清选择器订阅、useShallow、派生数据与选型边界。
WebStorm Windows 版 React / Next.js 实战替换指南
本文在保留原 Vue 3 结构基础上,全面替换第 14 章内容,涵盖 React + Vite + TypeScript 及 Next.js App Router 两套实战方案。重点包括项目结构、路由、状态管理(Zustand)、API 封装、调试配置及构建部署差异。新增章节详解服务端组件边界、数据获取与 Server Actions,对比 React 与 Next.js 适用场景,并提供完整可落地代码清单与 WebStorm 常见问题排查。
7081



被折叠的 条评论
为什么被折叠?



