2-2-7 React 几个用Hooks的小技巧

2023-11-06

1:Hooks+控制流

if(...) {
  useEffect(() => {

  }, [])   
}

Hooks是对行为的声明,`if-else` 是分支控制, 不是声明的一部分。 从理论上不应该有声明在控制流之下。在React内部通过Hooks的词法顺序来区分不同的Hook。

2 : Stackoverflow

如果操作不慎,可能会导致StackOverflow。

const [s, setS] = useState(0)

useEffect(() => {
   setS(x => x + 1)
}, [s])

3: Effect的注销

如果一个effect中监听了事件,或者发送了请求,但是有时候在事件响应、请求返回后组件已经被销毁了。因此要注意手动注销在effect中使用的资源。

useEffect(() => {
   const unsub = editor.on("some-event" ,() => {
       
   })
   
   return () => {
       unsub()

   }
}, [])

4: 多状态更新

多状态更新时,到底用多个`useState` 还是合并用一个大的呢?

const [money, setMoney] = useState(...)
const [unit, setUnit] = useState(...)
                                 
// some click function
setMoney(100)
setUnit("$")

没有必须用多个state还是一个对象,要看具体的场景。 通常一个`useState` 要解决一类问题。

const [products, setProducts] = useState({
    page : 0,
    list : []
})

const [money, setMoney] ...

5 : 如何在state变化后执行程序

const [s, setS] = useState({...})
                            
// 某个点击事件
setS({...})
// 通知外部
onChange()

有一些操作想要在setState后执行,这些操作可以将他们放到`useEffect` 当中:

const [s, setS] = useState({...})
                            
useEffect(() => {
    onChanage(s)
}, [s])                            
// 某个点击事件
setS({...})

1

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

2-2-7 React 几个用Hooks的小技巧 的相关文章

随机推荐

  • Windows PostgreSql创建服务

    一 创建服务 使用管理员cmd命令窗口在bin目录下 执行命令 pg ctl exe register N 服务名称 D 安装data数据目录 二 删除服务 执行命令 sc delete 服务名 三 启动服务 执行命令 sc start 服
  • 基于LinuxC语言实现的TCP多线程/进程服务器

    多进程并发服务器 设计流程 框架一 使用信号回收僵尸进程 void handler int sig while waitpid 1 NULL WNOHANG gt 0 int main 回收僵尸进程 siganl 17 handler 创建
  • 三阶魔方中心互换_三阶魔方入门

    一 魔方的构造 这里只讲常见的普通三阶魔方 三阶魔方一共有26个色块 分三个层 从上到下分别为顶层 中间层 底层 26个色块按位置分为中心块 角色块 棱色块 中心块6个 角色块8个 棱色块12个 中心块为每一个面最中央的色块 角色块为每一条
  • electron使用new Worker写入文件导致浏览器崩溃

    main js let data1 let data2 for let i 0 i lt 500000 i let j i 500 0 60000 0 data1 push j 200 Math random 100 data2 push
  • git下载别人的代码

    1 打开别人github上的源码地址 点击Clone or download 2 拷贝链接 3 通过git clone URL来下载 此外 还可以通过pwd来查看当前目录的路径 一般都是下载到当前目录下 注意 前提是自己的github上已添
  • 【剑指offer】数据结构——树

    目录 数据结构 树 直接解 剑指offer 07 重建二叉树 剑指offer 08 二叉树的下一个结点 剑指offer 26 树的子结构 剑指offer 27 二叉树的镜像 剑指offer 28 对称的二叉树 剑指offer 32 1 从上
  • Opencv中circle(),line(),cv2.rectangle(),cv2.putText()

    Opencv中circle line cv2 rectangle cv2 putText 一 circle 画圆 cv2 circle 方法用于在任何图像上绘制圆 用法 cv2 circle image center radius colo
  • 【OCR文本识别系列】Read Like Humans: Autonomous, Bidirectional and Iterative Language Modeling for Scene Tex

    read like humans 是中科大在2021年发在CVPR上的论文 论文链接 链接 代码链接 链接 视觉模型 class BaseVision Model def init self config super init config
  • QT 读写CSV文件

    目录 一 CSV的结构 二 源码简析 三 源码 一 CSV的结构 CSV文件 也称为逗号分隔值文件 顾名思义 就是用逗号和换行符分隔开的文件 下面举个例子就很清楚了 例如我有一个class csv文件 如果用表格软件打开 即如下 如果用记事
  • DVWA全等级通关教程(完结)

    Brute Force暴力破解 DVWA之Commend Injection 命令行注入 Cross Site Request Forgery CSRF 跨站请求伪造 File Inclusion 文件包含 File Upload 文件上传
  • vue中使用mapboxgl 加载天地图初始化并打点marker以及逆地理编码

    1 首先这个是中文文档地址开发文档 Mapbox 2 先注册一个token 具体文档流程 这边不过多介绍 3 下载npm install mapbox gl save 4 不多说 直接上代码 HTML中先创建一个盒子有宽高 id 还有记得引
  • 【maven】maven dependencyManagement 锁定Jar包版本

    1 概述 视频地址 maven dependencyManagement 锁定Jar包版本
  • 链栈之C++实现

    链栈是借用单链表实现的栈 其不同于顺序栈之处在于 1 链栈的空间是程序运行期间根据需要动态分配的 机器内存是它的上限 而顺序栈则是 静态分配内存的 2 链栈动态分配内存的特性使得它一般无需考虑栈溢出的问题 链栈的的组织结构如下图所示 容易发
  • 2021-11-06 液位控制滤波

    1 原文连接 我用 CSDN 这个app发现了有技术含量的博客 小伙伴们求同去 液位控制 一起来围观吧 https blog csdn net weixin 34405557 article details 93934030 utm sou
  • 请谈谈你对云计算的理解

    一 请谈谈你对云计算的理解 1 云计算产生的背景 随着并行计算 分布计算 网格计算 虚拟化 SOA 容错技术 网络带宽等关键技术日趋成熟 通过网络访问非本地的计算服务 包括数据处理 存储和信息服务等 的条件越来越成熟 多种技术的融合就产生了
  • img 图片固定大小 图片不糊 object-fit

    div h2 object fit fill h2 img src https interactive examples mdn mozilla net media examples plumeria jpg alt MDN Logo cl
  • Windows 无法验证此设备所需的驱动程序的数字签名。某软件或硬件最近有所更改,可能安装了签名错误或损毁的文件,或者安装的文件可能是来路不明的恶意软件。(代码52)...

    由未签名驱动导致的键鼠装无法使用的问题 usb 问题失效 要是win 10的话 导致的结果就是 无线键鼠套装无法使用 解决办法是 1 按下shift 按键 点击重启按钮 重启后 2 疑难解答 gt 启动 gt f7 禁用未签名强制验证 3
  • chatgpt提问示例指南

    担任雅思写作考官 我希望你假定自己是雅思写作考官 根据雅思评判标准 按我给你的雅思考题和对应答案给我评分 并且按照雅思写作评分细则给出打分依据 此外 请给我详细的修改意见并写出满分范文 第一个问题是 It is sometimes argu
  • RHCE第五次作业

    1 总结变量的类型及含义 2 实现课堂案例计算长方形面积 6种方式 3 定义变量url https blog csdn net weixin 45029822 article details 103568815 通过多种方法实现 1 截取网
  • 2-2-7 React 几个用Hooks的小技巧

    1 Hooks 控制流 if useEffect gt Hooks是对行为的声明 if else 是分支控制 不是声明的一部分 从理论上不应该有声明在控制流之下 在React内部通过Hooks的词法顺序来区分不同的Hook 2 Stacko