hooks 的实现原理其实不复杂 , 就是在某个上下文中存放一个链表 , 然后 hooks api 从链表不同的元素上访问对应的数据来完成各自的逻辑 。 这个上下文可以是 vdom、fiber 甚至是全局变量 。
不过 hooks 这个思想还是挺火的 , 淘宝出的服务端框架 midway 就在引入了 hooks 的思想:
midway 如何实现 hooksmidway 是一个 Node.js 框架:

文章插图
服务端框架自然就没有 vdom、fiber 这种结构 , 不过 hooks 的思想并不依赖这些 , 实现 hooks 的 api 只需要在某个上下文放一个链表就行 。
midway 就实现了类似 react hooks 的 api:

文章插图

文章插图
具体它这个 hook 链表存在哪我还没看 , 不过我们已经掌握 hooks 的实现原理了 , 只要有个上下文存放 hook 链表就行 , 在哪都可以 。
总结react hooks 是在 react fiber 架构之后出现的特性 , 很多人误以为 hooks 必须配合 fiber 才能实现 , 我们分别看了 react、preact、react ssr、midway 中的 hooks 的实现 , 发现并不是这样的:
- react 是把 vdom 转成 fiber , 然后把 hook 链表存放到了 fiber.memorizedState 属性上 , 通过 next 串联preact 没有实现 fiber , 它是把 hook 链表放到了 vnode._component._hooks 属性上 , 数组实现的 , 通过下标访问react ssr 时不需要 fiber , 但是也没有把 hook 链表挂到 vdom 上 , 而是直接放在了一个全局变量上 , 因为只需要渲染一次 , 渲染完一个组件就清空这个全局变量就行midway 是一个 Node.js 框架 , 它也实现了 hooks 类似的 api , 具体放在哪我们没深入 , 但是只要有个上下文存放 hook 链表就行
明显不是 , 搭配 fiber、搭配 vdom、搭配全局变量 , 甚至任何一个上下文都可以 。
更多编程相关知识 , 请访问:编程视频!!
以上就是react如何实现hooks?必须依赖 Fiber 么?的详细内容 , 更多请关注电脑自学网其它相关文章!
推荐阅读
- 荣耀路由Pro如何使用手机访问USB存储设备?
- 荣耀路由Pro如何备份配置文件?荣耀路由Pro备份配置文件的方法
- 如何把手机无线网络连接到电脑上 手机怎么无线连接电脑使用教程
- 手把手教你如何清理打印机喷头 打印机怎么清洗打印喷头
- 教你如何分清外甥和侄子! 侄子和外甥怎么区分
- 宝宝如何睡出好“相貌”?
- 儿童伤害高发 如何预防和急救
- 如何让发际线慢慢变低 护发素的用法
- 怎样正确使用眼霜效果好 如何正确使用眼霜
- 笔记本电脑哪个好?懒人小编教你如何选购笔记本成为攻无不克的玩家