react hooks中为useState添加回调函数(自定义hooks)

2023-11-02

react hooks默认是不支持useState的回调的,但有时候因为异步问题,不能及时获取到修改后的值,所以我们可以自定义回调函数

1.先自定义函数


  function useCallbackState(od) {
    const cbRef = useRef();
    const [data, setData] = useState(od);

    useEffect(() => {
      cbRef.current && cbRef.current(data);
    }, [data]);

    return [
      data,
      function (d, callback) {
        cbRef.current = callback;
        setData(d);
      }
    ];
  }

2.初始化时我们使用这个函数

const [activeTabName, setActiveTabName] = useCallbackState('');

3.使用时像setState的用法一样放在变量后边就可以了

setActiveTabName(current[0].title, (activeTabName) => {});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

react hooks中为useState添加回调函数(自定义hooks) 的相关文章

  • React重点知识拓展,含Hooks、路由懒加载等

    第7章 React扩展 一 setState 1 setState更新状态的2种写法 setState stateChange callback 对象式的setState stateChange为状态改变的对象 该对象可以体现出状态的更改
  • Antd DatePicker 设置默认值报clone.weekday is not a function

    代码 dayjs版本1 11 7 页面 当点击页面日期框会报clone weekday is not a function 解决方法 在jsx文件中添加如下js import dayjs from dayjs import advanced
  • React仿写网易云音乐项目

    文章目录 一 项目功能说明 二 最终效果 三 文件目录结构说明 四 项目技术栈 五 核心技术 1 配置项目别名 craco craco 2 使用reset css进行 css 重置 3 使用CSS Sprites 精灵图 4 使用 memo
  • React 初识之Umi项目搭建实战

    一 创建项目 创建之前需要安装 Node js 和 npm yarn 这俩个环境 在WebStorm里面创建一个项目 输入命令 yarn create umi 弹出选项 这里我们选择第二项APP 选择是否使用typescript 这里选no
  • 【React】路由(详解)

    目录 单页应用程序 SPA 路由 前端路由 后端路由 路由的基本使用 使用步骤 常用组件说明 BrowserRouter和HashRouter的区别 路由的执行过程 默认路由 精确匹配 Switch的使用 重定向路由 嵌套路由 向路由组件传
  • React页面设计初体验

    1 定制路由 export default login path login name login component layouts BlankLayout routes path login component Login Index
  • 【react】新旧生命周期对比

    componentWillUpdate componentWillReceiveProps componentWillMount 上述这三个生命周期在V18以上的版本中 使用时要加上UNSELF name
  • React-(4)React中的事件绑定

    React中的事件绑定 在 React 组件中 每个方法的上下文都会指向该组件的实例 即自动绑定 this 为当前组件 而且 React 还会对这种引用进行缓存 以达到 CPU 和内存的最优化 在使用 ES6 classes 或者纯函数时
  • Ant Design Pro从零到一(认识AntD)

    废话 在我们第一次接触AntD的时候 会遇到两个东西 一个是Ant Design 另一个是Ant Design Pro 他们的官网分别是 Ant Design 一套企业级 UI 设计语言和 React 组件库 Ant Design Pro
  • React(一):React的设计哲学 - 简单之美

    React 一 React的设计哲学 简单之美 React 二 React开发神器Webpack React 三 理解JSX和组件 React 四 虚拟DOM Diff算法解析 React 五 使用Flux搭建React应用程序架构 Rea
  • useEffect详情用法

    1 为什么要使用useEffect 想必大家都是用过vue吧 在vue框架所写的项目中 我们通过在与后端进行数据交互的过程中 通常都是会在生命周期中进行数据的请求 然后将数据返回给页面进行渲染 在React中我们也是这样 但是在函数式组件中
  • React实现关键字高亮

    先看效果 实现很简单通过以下这个函数 highLight text keyword gt return text split keyword flatMap str gt span keyword span str slice 1 展示某段
  • React、Vue2.x、Vue3.0的diff算法

    前言 本文章不讲解 vDom 实现 mount 挂载 以及 render 函数 只讨论三种 diff 算法 VNode 类型不考虑 component functional component Fragment Teleport 只考虑 E
  • react 父组件调用子组件的方法

    子组件中 const child forwardRef props ref gt useImperativeHandle ref gt 这里面的方法是暴露给父组件的 test console log 我是组件里的test方法 test2 t
  • vue发展历史简介

    基本介绍 Vue 是一套用于构建用户界面的 渐进式框架 与其它大型框架不同的是 Vue 被设计为可以自底向上逐层应用 最初它不过是个人项目 时至今日 已成为全世界三大前端框架之一 github 上拥有 17 8万 Star 领先于 Reac
  • 如何替换对象的key值

    发生的场景 现在用antd组件库 有些组件想渲染数据的话 我要根据他们官网给的字段名称对应起来才能渲染上去 这个是复选框选中 保存的时候 字段需要按照后台约定的传入code value 1 常规循环遍历 大招来了 哈哈哈 才疏学浅 我觉得是
  • React Jsx转换成真实DOM过程?

    面试官 说说React Jsx转换成真实DOM过程 一 是什么 react 通过将组件编写的 JSX 映射到屏幕 以及组件中的状态发生了变化之后 React 会将这些 变化 更新到屏幕上 在前面文章了解中 JSX 通过 babel 最终转化
  • React Jsx转换成真实DOM过程?

    面试官 说说React Jsx转换成真实DOM过程 一 是什么 react 通过将组件编写的 JSX 映射到屏幕 以及组件中的状态发生了变化之后 React 会将这些 变化 更新到屏幕上 在前面文章了解中 JSX 通过 babel 最终转化
  • React安装依赖 node_modules中有下载依赖项但package.json文件中没有依赖

    React安装依赖 node modules中有下载依赖项但package json文件中没有依赖 直接在下载依赖项后 加 S 就可以解决 随机 id 生成器 uuid nanoid npm install nanoid S S save
  • 在 React JS 的回调中使用自定义钩子

    我有这个自定义钩子 const useSomething gt const displayAlert text gt alert text return displayAlert 现在我想在我的代码中的某个地方使用它 如下所示 const

随机推荐

  • java投影查询_详解Spring Data JPA系列之投影(Projection)的用法

    本文介绍了Spring Data JPA系列之投影 Projection 的用法 分享给大家 在JPA的查询中 有一个不方便的地方 Query注解 如果查询直接是 Select C from Customer c 这时候 查询的返回对象就是
  • 论文笔记 & R 笔记:imputeTS: Time Series Missing ValueImputation in R

    0 摘要 imputeTS 包专门研究单变量时间序列插补 它提供了多种最先进的插补算法实现以及用于时间序列缺失数据统计的绘图函数 虽然插补通常是一个众所周知的问题 并且被 R 包广泛覆盖 但找到能够填补单变量时间序列中缺失值的包更加复杂 其
  • js的函数的逻辑中断

    逻辑中断也称短路运算 指的是在包含多个表达式的逻辑判断从左往右执行时 当左边的表达式可以确定结果时 就不再对右边的表达式进行逻辑判断 逻辑中断 逻辑中断 1 表达式1 表达式2 表达式1为真 返回表达式1 表达式1为假 返回表达式2 2 表
  • 华为hg532e设置虚拟服务器,华为hg532e设置虚拟服务器

    华为hg532e设置虚拟服务器 内容精选 换一换 本节操作介绍华为云上云服务器的跨账号跨区域迁移 建议采用镜像迁移方式 服务器迁移的常见场景与常用的迁移方式请参考迁移的背景知识 跨账号跨区域迁移的方法请参考方案介绍常见的服务器迁移场景包括物
  • OPEN3D(python)学习笔记-1.4 点云裁剪

    官方文档链接 http www open3d org docs release 示例代码 用read selection polygon volume读取指定的多边形区域的json文件 import open3d as o3d import
  • 阿里云服务器使用过程小记

    实验室服务器升级 之前一直免费托管在学校实验室 最近开始往阿里云上面迁移 先从阿里云服务器ECS入手 以下是在实验过程中的一些记录 记录下来便于后期管理 一 前端设备数据接入 一 最普遍的使用是采用DTU透传 DTU配置的目标IP即为ECS
  • appium从安装到运行,控制真机+模拟器,安卓自动化

    1 jdk 8u152 windows x64 exe 下载地址 JAVA环境变量 https www oracle com cn java technologies oracle java archive downloads html 系
  • pnpm install报错

    原因是npm版本过高 降低版本可成功install 以下是nvm管理node版本常用的一些命令 方便多个项目切换node版本
  • 对英文字母和数字的组合分别排序,并计算相同字母后的数字和

    import java io BufferedReader import java io FileReader import java util Map import java util TreeMap public class PaiXv
  • Struts2 框架验证

    一 对于输入校验struts2提供了两种实现方法 1 采用手工编写代码实现 2 基于XML配置方式实现 注意 配置验证文件ActionName alias validation xml 常用 使用基于XML配置方式实现输入校验时 Actio
  • 第三方(网页/小程序)唤醒微信app小结

    第三方 网页 小程序 唤醒微信app小结 在实际业务中 要在第三方网页或者小程序实现唤醒微信app 其实很简单 贴代码 a href a 或者 window location href weixin 或者 window location r
  • python execjs库_python3调用js的库之execjs

    执行JS的类库 execjs PyV8 selenium node 这里主要讲一下execjs 一个比较好用且容易上手的类库 支持py2 与py3 支持 JS runtime url https pypi org project PyExe
  • 如何设置管道为非阻塞

    LINUX中 管道的读写两端是阻塞的 例如读端会一直阻塞直到写端写入内容 才会立即返回 其实也可以将管道中的读或写端设置为非阻塞状态 如果要设置读端或者写端为非阻塞 参考以下三个步骤 int flags fcntl fd 0 F GETFL
  • 盒子模型(详)

    定义 每一个标签都是一个矩形 像一个盒子 所以HTML页面的布局可以理解为多个盒子组合嵌套排列而成 盒模型由里到外包括四个部分 内容部分 padding 内边距 border 边框 margin 外边距 内容部分一般用来显示图像或文字 在标
  • SpringCloud - Spring Cloud Netflix 之 Hystrix熔断器(七)

    阅读本文前可先参考 SpringCloud Spring Cloud根 父项目 开发准备 二 MinggeQingchun的博客 CSDN博客 在微服务架构中 一个应用往往由多个服务组成 这些服务之间相互依赖 依赖关系错综复杂 通常情况下
  • Python注册器register初使用

    创建三个文件 register py import importlib import logging MODEL MODULES models ALL MODULES model MODEL MODULES def import all m
  • beef-xss

    下载使用 apt get install beef xss apt get update beef xss 使用beef xss命令打开后 默认打开一个浏览器登录页面 初次使用需要修改密码 example处修改为本机IP 在DVWA进行测试
  • 基于Java+SSM项目的计算机毕业设计-电器网上订购系统项目实战(附论文+源码)

    大家好 我是职场程序猿 感谢您阅读本文 欢迎一键三连哦 当前专栏 Java毕业设计 精彩专栏推荐 安卓app毕业设计 微信小程序毕业设计 演示视频 ssm003电器网上订购系统演示 转 标准 源码下载地址 https download cs
  • 利用过滤器实现 论坛或留言板 上内容转义

    注意此方法只能解决getParameter 方法取得参数转义 若要彻底解决getParameterMap 和getParameterValues 方法取得参数的转义 则需要使用 关于Filter 覆盖getParameterMap 来实现功
  • react hooks中为useState添加回调函数(自定义hooks)

    react hooks默认是不支持useState的回调的 但有时候因为异步问题 不能及时获取到修改后的值 所以我们可以自定义回调函数 1 先自定义函数 function useCallbackState od const cbRef us