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

如何本地 Debug React 源码

日常开发过程中,有时 debug react 源代码进行问题排查。一种方案是直接把通过 html 引入进来,另外一种是编译并通过 yarn 链接到项目中,本地将介绍如何通过这两种方法进行代码 Debug。

页面引入源代码方式

这种方式比较简单,直接引入 React 代码,适合学习使用。

<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><title>Hello World</title><script src="https://unpkg.com/react@18/umd/react.development.js"></script><script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script><!-- Don't use this in production: --><script src="https://unpkg.com/@babel/standalone/babel.min.js"></script></head><body><div id="root"></div><script type="text/babel">const { useState } = React;function MyApp() {const [counter, setCounter] = useState(10)       return <h1>Hello, world! </h1>;}const container = document.getElementById('root');const root = ReactDOM.createRoot(container);root.render(<MyApp />);</script><!--Note: this page is a great way to try React but it's not suitable for production.It slowly compiles JSX with Babel in the browser and uses a large development build of React.Read this page for starting a new React project with JSX:https://react.dev/learn/start-a-new-react-projectRead this page for adding React with JSX to an existing project:https://react.dev/learn/add-react-to-an-existing-project--></body>
</html>

找到想要 debug 的代码,添加断点进行 debug。
在这里插入图片描述

编译源代码

通过编译源代码进行React的 Debug,这种方式的好处是可以直接在项目中使用,替换项目引用的 React。

  1. 从 github 下载最新代码,并指定所需要的版本
git clone https://github.com/facebook/react
# 查询分支
git brank -r
# checkout想要的版本号
git checkout ${version} 
  1. 安装依赖
yarn install 
  1. React 使用 yarn workspace 进行多项目管理,由于测试项目为web 项目,只需编译React和React-Dom。
yarn build react/index,react/jsx,react-dom/index,scheduler --type=NODE
  1. 进入编译好的项目目录并创建 link,替换项目使用 React 和 React-Dom
## react link
build/node_modules/react 
yarn link## react-dom link
build/node_modules/react-dom
yarn link
  1. 进入当前项目目录,这里通过 CRA 创建了一个新项目
# create project
npx create-react-app react-client
# 进入项目目录运行
cd react-client
yarn link react react-dom

在这里插入图片描述
可以看到 react 和 react-dom 都已经地换成为软连接的形式
在这里插入图片描述
6. 启动项目,找到需要 debug 方法添加断点即可

yarn start

在这里插入图片描述

总结

对于React 代码 debug 的两种方式,个人更倾向于第二种方式,编译源代码的方式稍微麻烦一些,但是对原始代码没有任何侵入性。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 算法工程师需要学习C++的哪些知识?
  • Scala编程基础3 数组、映射、元组、集合
  • 社情民意调查主题和领域
  • XS2185一款八通道以太网供电控制器
  • 使用Spring Boot编写的小项目
  • 用例设计需遵循哪些规范标准?
  • FilterRegistrationBean
  • 条款9:利用destructors避免泄露资源
  • 上周暗网0day售卖情报一览
  • 【管理咨询宝藏114】贝恩为某知名化妆品战略规划方案
  • 低代码与人工智能:革新智能客服系统的高效之道
  • 使用vanna实现Text2SQL
  • wordpress主题给网站增加一个版权声明区块代码分享
  • 品牌曝光秘籍:让更多人知道你的品牌,这些推广技巧必学
  • 软件设计师中级 重点 笔记
  • 【笔记】你不知道的JS读书笔记——Promise
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Bytom交易说明(账户管理模式)
  • Git学习与使用心得(1)—— 初始化
  • iOS 颜色设置看我就够了
  • Java程序员幽默爆笑锦集
  • java概述
  • java中的hashCode
  • Js基础知识(一) - 变量
  • js中forEach回调同异步问题
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Python3爬取英雄联盟英雄皮肤大图
  • sublime配置文件
  • vue自定义指令实现v-tap插件
  • 回流、重绘及其优化
  • 警报:线上事故之CountDownLatch的威力
  • 前端设计模式
  • 入口文件开始,分析Vue源码实现
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 网页视频流m3u8/ts视频下载
  • 赢得Docker挑战最佳实践
  • 运行时添加log4j2的appender
  • 走向全栈之MongoDB的使用
  • 【干货分享】dos命令大全
  • # Redis 入门到精通(一)数据类型(4)
  • (06)Hive——正则表达式
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (备忘)Java Map 遍历
  • (二)原生js案例之数码时钟计时
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (五)activiti-modeler 编辑器初步优化
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)LINQ之路
  • (转)母版页和相对路径
  • .NET CLR Hosting 简介
  • .NET HttpWebRequest、WebClient、HttpClient