这篇文章主要介绍“怎么掌握React组件树遍历技巧”,在日常操作中,相信很多人在怎么掌握React组件树遍历技巧问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么掌握React组件树遍历技巧”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!本文对应的 react
版本是 18.2.0
下面的 dom
结构react
内部是如何遍历的在 render
时调用 commitPassiveUnmountOnFiber
函数commitPassiveUnmountOnFiber
处理不同的 WorkTag
,并调用 recursivelyTraversePassiveUnmountEffects
recursivelyTraversePassiveUnmountEffects
根据当前 Fiber
的子节点有没有 passive effect
(useEffect
,useLayoutEffect
)来决定是否遍历当前 Fiber
的子节点具体从哪个兄弟节点开始遍历,react
选择的是离退出循环的那个叶子节点的父节点,检查有没有子节点,以此循环遍历如果子节点有 passive effect
,则优先遍历子节点 (深度优先),直到找到最终的叶子节点,退出当前循环然后进入兄弟节点,开始遍历兄弟节点的子节点直到最后找到所有有 passive effect
的节点代码简化:首先从根组件开始 FiberRootNode
,取到 current
也就是说 FiberRootNode.current
是 div#root
这是一个 fiber
,它的 tag
是 3
由于 App
的子组件有 passive effect
,所以会进入 App
组件,它的 tag
是 0
App
组件中节点是
的 tag
是 5
-
下面有两个子元素
、
先遍历
它的
tag
是5
内部只有一个文本节点,没有
passive effect
-
所以
react
不遍历了(跳出当前遍历的循环,也就是button
这条不在遍历了)
跳出循环后,查看
button
的兄弟节点,它的兄弟节点是,
的
tag
是0
由于
节点的子节点没有
passive effect
,所以跳出循环,结束整个遍历遍历逻辑如下图所示
图中画绿色勾的都会被遍历,红色勾是遍历的顺序
到此,关于“怎么掌握React组件树遍历技巧”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注百云主机网站,小编会继续努力为大家带来更多实用的文章!
推荐阅读:- 怎么搭建React Native开发环境
- 如何写出漂亮的React组件
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@byun.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
猜你喜欢
- python如何检查对象的内存占用情况
- java如何使用substring()方法反转字符
- 如何使用python实现列表反转
- linux如何使用rm命令删除目录
- java如何使用Byte数组反转字符
- java如何通过交换实现字符反转
- java如何使用String charAt方法反转字符
- python如何将元素进行重复
- python如何判断字符串是不是回文串
- js如何通过字符获取位置或通过位置获取字符
最新资讯
- Python虚拟机中的Codeobejct有什么作用
- Python怎么实现获取乱序列表排序后的新下标
- 怎么利用Golang泛型提高编码效率
- 基于Python怎么实现文件分类器
- 怎么用Python制作一个愚人节整蛊消息框
- Nginx中的upstream模块如何使用
- Python3中str、bytes、bytearray转化的方法是什么
- 怎么使用Python+tkinter编写一个强制表白神器
- Go语言数组和切片的区别有哪些
- Python定时任务触发的方法是什么
相关推荐
- 怎么编写react组件
- 如何使用React + Redux + React-router构建可扩展的前端应用
- 怎样深入理解react
- 怎么在React中做到jQuery-free
- 模块联邦实现微应用的方法步骤
- React架构的演变之如何理解Hooks的实现
- React 17有哪些优点
- 如何通过欺骗性的React元素实现XSS
- React项目的打包与部署方法
- 怎么接地气地接入微前端
相关标签
、
先遍历 它的
tag
是 5
内部只有一个文本节点,没有
passive effect
-
所以
react
不遍历了(跳出当前遍历的循环,也就是button
这条不在遍历了)
跳出循环后,查看 button
的兄弟节点,它的兄弟节点是 ,
的
tag
是 0
由于 节点的子节点没有
passive effect
,所以跳出循环,结束整个遍历
遍历逻辑如下图所示
图中画绿色勾的都会被遍历,红色勾是遍历的顺序
到此,关于“怎么掌握React组件树遍历技巧”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注百云主机网站,小编会继续努力为大家带来更多实用的文章!
- 怎么搭建React Native开发环境
- 如何写出漂亮的React组件
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@byun.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
猜你喜欢
- python如何检查对象的内存占用情况
- java如何使用substring()方法反转字符
- 如何使用python实现列表反转
- linux如何使用rm命令删除目录
- java如何使用Byte数组反转字符
- java如何通过交换实现字符反转
- java如何使用String charAt方法反转字符
- python如何将元素进行重复
- python如何判断字符串是不是回文串
- js如何通过字符获取位置或通过位置获取字符
先遍历 它的
tag
是 5
内部只有一个文本节点,没有
passive effect
所以 react
不遍历了(跳出当前遍历的循环,也就是 button
这条不在遍历了)跳出循环后,查看 button
的兄弟节点,它的兄弟节点是 ,
的
tag
是 0
由于 节点的子节点没有
passive effect
,所以跳出循环,结束整个遍历图中画绿色勾的都会被遍历,红色勾是遍历的顺序到此,关于“怎么掌握React组件树遍历技巧”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注百云主机网站,小编会继续努力为大家带来更多实用的文章!免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@byun.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
相关推荐: 如何使用React Router v6添加身份验证
这篇文章主要讲解了“如何使用ReactRouterv6添加身份验证”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用ReactRouterv6添加身份验证”吧!React Router v6是React应用…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。