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

React自定义同步状态Hook

react 中 useState是一个异步的操作,有时我们更新了数据往往不能够及时拿到最新数据,对每个state进行useEffect进行监听又增加不少代码量,于是我们可以自定义一个同步状态Hook用于及时获取数据

import React, { useState, useEffect, useRef, useCallback } from 'react';// 自定义同步状态Hookfunction useSyncState(initialState: any) {const [state, setState] = useState(initialState);const stateRef = useRef(initialState);const setSyncState = useCallback((newState: any) => {stateRef.current = typeof newState === 'function' ? newState(stateRef.current) : newState;setState(stateRef.current);return stateRef.current; // 返回最新值}, []);// 保持ref同步useEffect(() => {stateRef.current = state;}, [state]);return [state, setSyncState, stateRef];}

使用起来也很简单:

const [loading, setLoading, loadingRef] = useSyncState(false);// 设置状态
setLoading(true)//获取最新数据
console.log(loading) //因为异步更新可能导致打印出来为false
console.log(loadingRef.current) // true

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

相关文章:

  • 系统架构设计能力
  • 安卓图形系统架构
  • 《ZooKeeper终极指南》
  • 软考 系统架构设计师系列知识点之杂项集萃(154)
  • 算法提升之单调数据结构-单调栈与单调队列
  • 【Linux】初识进程(Ⅰ)
  • VMware登录后没有网络解决方法
  • Infoseek助力品牌公关升级:从成本中心到价值引擎
  • AR 运维系统与 MES、EMA、IoT 系统的融合架构与实践
  • 牛客周赛 Round 110
  • AutoMQ x Lightstreamer: Kafka 金融数据实时分发新方案
  • Vulkan原理到底学什么
  • 第14讲 机器学习的数据结构
  • MATLAB的宽频带频谱感知算法仿真
  • Adobe Fresco下载教程Adobe Fresco 2025保姆级安装步骤(附安装包)
  • MQTT 服务质量 (QoS) 深度解析
  • MySQL EXPLAIN 中的七种 type 类型详解
  • NestJS认识
  • 6.MySQL索引的数据结构【面试题】
  • 【vLLM 最新版v0.10.2】docker运行openai服务与GGUF量化使用方式
  • 鸿蒙开发入门:ArkTS基础与实战
  • #C语言——刷题攻略:牛客编程入门训练(十三):一维数组(二),轻松拿捏!
  • 2.16Vue全家桶-Vuex状态管理
  • 【SSR】SSR 性能问题
  • 《UE教程》第二章第四回——父类蓝图
  • GORM库用法查漏补缺
  • C++11 移动语义与右值
  • FPGA学习笔记——图像处理之对比度调节(直方图均衡化)
  • 如何进行人脸识别
  • 计算机视觉笔试选择题:题组1