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

React Hooks为什么要在顶层使用?

为什么必须在函数顶层使用hooks?

使用过 hooks 的小伙伴应该都会发现,hooks只能在函数式组件的顶层使用,不能在循环,条件或嵌套函数中调用 Hook。

为什么呢?

查阅了很多答案,总结如下:

hooks 是 react 16.8版本推出的,而react v16版本最大的改变就是引入了fiber架构。hooks的实现就是基于fiber的。每个组件都会生成一个 FiberNode(节点),组件内使用的 hook 会以链表的形式挂在 FiberNode 的 memoizedState 上面。各个 FiberNode 汇聚起来会变成一颗 Fiber 树,React 每次会以固定的顺序遍历这棵树,这样就把整个页面的 hook 都串联起来了。
当 react 重新渲染时,会生成一个新的 fiber 树,而这里会根据之前已经生成的 FiberNode ,拿到之前的 hook ,再复制一份到新的 FiberNode 上,生成一个新的 hooks 链表。
react按顺序来区分不同的 hook,它默认你不会修改这个顺序。如果你没有在顶层使用 hook ,打乱了每次 hook 调用的顺序,就会导致 react 无法区分出对应的 hook

相关文章:

  • 【go-zero】go-zero 脚手架 simple-admin 第二章:通过goctls生成api整个项目
  • 【公益案例展】火山引擎公益电子票据服务——连接善意,共创美好
  • Excel中功能区的存放位置很灵活,可以根据需要隐藏或显示
  • Maven中<scope>中等级的区别
  • [C]环境(0/0)→ 环境配置
  • 基于SpringBoot+Vue的婚恋相亲交友系统
  • openvino学习(一)ubuntu20.04安装openvino2022
  • 基于Pytorch框架的LSTM算法(二)——多维度单步预测
  • 如何修改CentOS登录时默认目录
  • Django ORM:数据库操作的Python化艺术
  • Mac电脑录屏软件 Screen Recorder by Omi 中文最新
  • LLVM学习笔记(60)
  • 「随笔」浅谈2023年云计算的发展趋势
  • 【c趣编程】输入一个整数,判断其有几位
  • 在linux安装单机版hadoop-3.3.6
  • 视频批量混剪剪辑软件类似剪映设计一个模板后, 视频,图片,文字,转场,音频,特效都可以系统随机
  • 轻松与任何 SQL 数据库集成:Directus 助你无代码开发 | 开源日报 No.69
  • 通过一道题目带你深入了解WAF特性、PHP超级打印函数、ASCII码chr()对应表等原理[RoarCTF 2019]Easy Calc 1
  • vscode + cmake + opencv example
  • 音视频技术开发周刊 | 318
  • 无人机企业从科技园区搬到乡村后,村子里变得不一样了
  • 香港特区政府强烈谴责美参议员恐吓国安人员
  • 尹锡悦宣布退出国民力量党
  • 王伟妻子人民日报撰文:81192,一架永不停航的战机
  • 小耳朵等来了春天:公益义诊筛查专家走进安徽安庆
  • 从《让·桑特伊》到《追忆》,假故事的胜利