前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2021年React学习路线图

2021年React学习路线图

作者头像
深度学习与Python
发布于 2021-02-05 02:03:51
发布于 2021-02-05 02:03:51
7.8K0
举报
作者 | Michael Chi

译者 | 吴留坡

策划 | 田晓旭

2018 年我们写过一次 React 学习路线图(https://www.infoq.cn/article/AEkiVAiJf25LZmoUe_yc),两年过去了,又有哪些变化呢?

React 从入门到精通,你要知道的都在这。

React 是最流行的 JavaScript 库之一,用于创建动态网页应用。背后有大量的社区支持和活跃的开发团队。

React 核心库相对简单,但是只学这个库并不够,特别是创建复杂的网页应用时。

我从 2016 年开始用 React 开发,当任务变得越来越复杂时,我不得不学习其他辅助库,来实现这些功能。

本文列出重要的 React 概念和其他你需要知道的有用的库,你可以学到怎么用 React 创建真实应用。

1. 预备知识

既然 React 是 JavaScript 库,你需要熟练掌握 JavaScript 基础和 ES6 语法。建议你学习 React 之前,先用纯 HTML/CSS 和原生 JavaScript 写一个简单的网站。

2. 基础入门

这一节,我会分享一些必须学习的知识,从而可以创建简单但有用的 React 应用,结尾推荐了我用过的学习资源。

2.1 create-react-app 脚手架

https://github.com/facebook/create-react-app

通过一行命令,不需要配置就可以创建 React 应用,支持 macOS, Windows, and Linux。

我相信“码上学习”,这个库将帮你从 React 应用中立即开始。

它用几个默认文件搭建项目,让你直接开始编码,了解 React 是怎么工作的。

如果觉得好奇,你可以把应用配置释放出来(译者注,eject 是 create-react-app 的一个子命令,执行 npm run eject 后,将拷贝 node_modules/react-scripts 下默认的配置文件到项目 config 和 scripts 目录,便于自定义应用配置项、和编译打包脚本),深入了解 React 代码是怎样转换并运行在浏览器上。如果你是初学者,不用现在就考虑 React 应用是怎么从脚手架创建来的。

2.2 JSX 模版语法

你应该从这个 React 最基础的概念开始,它用 JSX 创建组件。你几乎看不到不用 JSX 创建的真实应用。先熟悉下面几个话题。

用 JSX 渲染一个元素:

https://zh-hans.reactjs.org/docs/rendering-elements.html

内嵌 JavaScript 表达式:

https://zh-hans.reactjs.org/docs/introducing-jsx.html#embedding-expressions-in-jsx

特定元素属性:

https://zh-hans.reactjs.org/docs/introducing-jsx.html#specifying-attributes-with-jsx

更新已渲染的元素:

https://zh-hans.reactjs.org/docs/rendering-elements.html#updating-the-rendered-element

2.3 组件

你需要掌握这个非常重要的概念,一个 React 应用由很多独立的可重用的组件组成。

组件是高度具体的并且通常孤立的代码片段。每个组件最好只处理一件事情,通过参数和上下文共享数据。例如,你可能有单个头部组件,仅用来渲染导航链接。

从四部分来理解组件:

  • 学习组件之间的数据通讯
  • 从组件的角度想象一个页面
  • 生命周期和状态
  • 函数和类组件

你应该理解属性的概念,它是怎么传递到子组件,怎么使用 PropTypes 来进行类型检查。上下文是组件数据通讯的另一种相对高级的方式。

接下来你用组件的概念思考一个页面。随便找个网页,就像 H&M 官网,尝试把它分割成组件,迫使你将注意力集中在尽可能少的代码上,练习代码设计。面试的时候,我也被多次要求这样。

图片 React Bootstrap 主页被分割成多个组件

每个组件有一套生命周期,动态数据保存在状态中。当状态中的数据发生改变时,组件会再次渲染,来更新这些变更。你要理解这几个基础概念。

学习这些概念时,毫无疑问你将遇到条件渲染和从列表中渲染多个组件。此时,你应该创建一个简单的 React 应用。

最后要理解的是,函数组件和类组件之间的差异,以及他们的用法,这就是 Hooks。

2.4 Hooks

Hooks 简介:

https://zh-hans.reactjs.org/docs/hooks-intro.html

React Hook 是 React 16.8 引入的新特性。它用在函数组件中,允许开发者不使用类的情况下,使用状态和其他特性。

之前,函数组件是无状态的,状态和生命周期用在类组件中。有了 Hooks,开发者可以在函数组件中使用状态。

你应该知道如何使用最常见的 Hooks,比如 setState 和 useEffect。

2.5 React Router

React Router:React 中的声明式路由

https://reactrouter.com/web/guides/quick-start

React Router 是 React 中的路由库,允许你基于 URL 渲染不同的组件。

学习这个组件,将是你开始创建全栈 React 应用的第一步。

2.6 React Query

React Query

https://react-query.tanstack.com/

一个网页需要获取数据,复杂的时候需要维护大量的状态,React 没有约定怎么获取和更新数据。状态管理很麻烦,所以有了 Redux 这样的库。

然而,Redux 很复杂,并且引入了大量的模版代码。如果你刚开始学习 React,你应该从更简单的东西开始。

React Query 是另一个轻量级库,经常被描述成“React 中看不见的数据请求库”。它比 Redux 容易多,也可以使用 Hooks(现在你应该熟悉它了)。

它使获取数据变得简单,可以在实际应用中做一些尝试。(我在工作中大量使用这个库)

2.7 小结

  • create-react-app
  • React 基础: 组件, 属性, 生命周期和状态
  • React Hooks
  • React Router
  • React Query

2.8 推荐资源

  • React 官方文档
  • https://zh-hans.reactjs.org/docs/getting-started.html
  • Traversy Media’s React crash course
  • https://www.youtube.com/watch?v=sBws8MSXN7A&ab_channel=TraversyMedia
  • The Net Ninja’s Hooks playlist
  • https://www.youtube.com/watch?v=6RhOzQciVwI&list=PL4cUxeGkcC9hNokByJilPg5g9m2APUePI&ab_channel=TheNetNinja
  • Five-minute tutorial on React Router
  • https://www.freecodecamp.org/news/react-router-in-5-minutes/
  • The Net Ninja’s React query playlist
  • https://www.youtube.com/watch?v=x1rQ61otgtU&list=PL4cUxeGkcC9jpi7Ptjl5b50p9gLjOFani&ab_channel=TheNetNinja

3. 高级进阶

3.1 Redux 和 Redux Thunk

Redux - JavaScript 应用程序的可预测状态容器

https://redux.js.org/

reduxjs/redux-thunk

https://github.com/reduxjs/redux-thunk

尽管 Redux 非常复杂,并且为最简单的数据获取引入了大量模版代码,但它仍然是业界非常流行的和广泛使用的状态管理库。

你应该学习:

  • 用 Redux 搭建一个项目
  • 用 Redux 做数据获取和状态管理
  • 可选的,看一下 Redux Thunk

一开始我很难理解 Redux。这里有一篇文章解释的很详细,并提供了一个关于 Redux 的手把手教程。

https://www.valentinog.com/blog/redux/

Redux Thunk 是一个流行的库,经常与 Redux 一起使用。它允许操作创建者返回函数而不是操作对象。学习 React 中它是可选的,但仍然是一个好用的库。

3.2 测试

Jest - 简单的 JavaScript 测试框架。

Jest 是一个简单的 JavaScript 测试框架,它注重简单性。可用于 Babel, TypeScript, Node, React, Angular, Vue 等项目。

React 测试库

https://testing-library.com/docs/react-testing-library/intro/

编写测试很重要,根据我的经验,通常比编写实际代码更难。

您应该学习最流行的测试库,如 Jest 和 Enzyme,以及如何使用库(如 Sinon )模拟 API 调用。还有其他库,比如 React 测试库。

当应用程序变得复杂时,要对单个组件进行良好的单元测试以确保正确性,而不是假设它们按预期的方式运行。

3.3 高级 React 概念

React 官方文档也区分了高级概念与主要概念。从技术上讲,构建 React 应用程序不需要了解任何高级概念。

然而,生产级应用程序通常使用到高级概念,例如 ref 和高阶组件。充分理解 React 功能总是很有用的,即使你不使用它。

在编写代码时,您可能会遇见它们,至少浏览一下这一部分,了解 React 可以做什么。

3.4 React 内部是怎么实现的

在这个阶段,你已经准备好深入了解 React 内部原理。

您可以在 create-react-app 创建的 React 应用上运行 eject,以了解 React 代码是怎样转换并运行在浏览器上。

您也可以尝试自己搭建 React 应用程序,而不使用 create-react-app 库。查看 Gulp、webpack 或 Babel,看看如何使用这些库来编译 React 代码。许多应用程序需要比 create-react-app 初始化的更大的灵活性。

最后,您可以查看 React 源代码以全面了解。

3.5 小结

  • Redux/Redux Thunk
  • 测试 React 组件
  • React 高级概念
  • 自己搭建一个 React 项目
  • React 源码

3.6 资源推荐

  • Redux 初学者教程
  • https://www.valentinog.com/blog/redux/
  • Jest 速成班
  • https://www.youtube.com/watch?v=7r4xVDI2vho&ab_channel=TraversyMedia
  • React 测试
  • https://medium.com/dailyjs/testing-react-an-overview-56204839cbad
  • React 官方文档高级概念章节
  • https://zh-hans.reactjs.org/docs/getting-started.html

4. 总结

希望这个列表对你有用,无论你是刚开始学习 React,还是想巩固 React 知识面。

React 一直由 Facebook 开发着,集成了多年的特性和功能,迷人且易用。

我对即将到来的功能感到非常兴奋,希望你也是。

最终,祝你在 React 旅途中一切顺利。

延伸阅读

https://medium.com/better-programming/a-2021-roadmap-to-learning-react-c58c28f5bb58

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 InfoQ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
React 基础
JSX是JavaScript XML的简写,表示了在Javascript代码中写XML(HTML)格式的代码
用户10169043
2022/11/18
2.2K0
React 基础
前端react面试题(必备)2
this.props是组件之间沟通的一个接口,原则上来讲,它只能从父组件流向子组件。React具有浓重的函数式编程的思想。
beifeng1996
2023/01/04
2.4K0
React 学习笔记,从入门到精通,持续记录
https://zh-hans.reactjs.org/docs/hello-world.html
房东的狗丶
2023/02/17
4330
React的从入门到升仙
自从出了《精通React》大专栏之后,经常有一部分小伙伴问我可以学吗,我的回答通常是下面这样:
前端bubucuo
2022/12/17
6660
React的从入门到升仙
请查收 2020 全球 JS 现状调查报告
千呼万唤的全球2020的JS报告终于出来了。顺便附上2020全球CSS报告地址 2020年度全球CSS报告新鲜出炉[1]
秋风的笔记
2021/01/20
8620
请查收 2020 全球 JS 现状调查报告
有哪些值得学习的大型 React 开源项目?
之前有很多小伙伴问过我,通过文档或者视频学习 React 已经有一段时间了,想学习一些好的开源项目来获得一些实战经验。我之前也没有很好的答案,确实很难找,因为一般企业级应用都是不开源的,Github 上大部分都是很简单的 DEMO 项目,很难挑选。
ConardLi
2023/01/09
8.4K0
有哪些值得学习的大型 React 开源项目?
2020全球JS报告调查结果,请查收
千呼万唤的全球2020的JS报告终于出来了。顺便附上2020全球CSS报告地址 2020年度全球CSS报告新鲜出炉
秋风的笔记
2021/01/14
1.1K0
React 学习笔记(基础篇)
以下是 React 学习的一些笔记,基本来源于 React 中文文档[1] ,刚开始学习 React,都比较基础,不喜勿碰!
GopalFeng
2020/09/24
1.5K0
React 学习笔记(基础篇)
React 学习路线图 2018版
这个 React 学习路线的思维导图来源自 Adam Gołąb 的 react-developer-roadmap 。截止至本文发布时,原仓库已经有了中文版,大家可自行选择查阅,由于是 roadmap 的聚合类列表,所以翻译方面差异不会很大。
用户1687375
2018/07/31
2.5K0
React 学习路线图 2018版
快速上手三大基础 React Hooks
20190313162354.png ? 快速上手三大基础 React Hooks Hooks 出了有段时间了,不知盆友们有在项目中开始使用了吗❓如果还没了解的童鞋,可以瞧瞧这篇文章,对比看下三大基础
JS菌
2019/04/10
1.5K0
一文入门react全家桶
1)遇到 <开头的代码, 以标签的语法解析: html同名标签转换为html同名元素, 其它标签需要特别解析
yuanshuai
2022/10/05
3.6K0
一文入门react全家桶
React-diff算法和React-其它内容-StrictMode.md
官方文档:https://zh-hans.reactjs.org/docs/reconciliation.html#the-diffing-algorithm
杨不易呀
2023/09/30
2310
react笔记
1.英文官网: https://reactjs.org/ 2.中文官网: https://react.docschina.org/
henu_Newxc03
2021/12/28
1.5K0
前端架构思考,Vue or React?领域设计、文件结构、数据管理、主题替换
其实写到这里,相信大家已经明白我的价值倾向了。在没有企业包袱的角度来看,大厂都是 react 为先😯, 我更加推荐使用 vue,原因如下👇
winty
2023/10/26
3590
前端架构思考,Vue or React?领域设计、文件结构、数据管理、主题替换
React 教程:React 快速上手指南 [每日前端夜话0x2B]
前端和 JavaScript 是一个奇怪的世界。大量不断推出的新技术的同时,也在被不需要它们的人嘲笑,往往很多人都会这样做。我们有时会对不断涌现的信息、库和讨论感到不知所措,总希望能有一些稳定的东西,就像能让我们可以休整一段时间的避风港。最近 React 似乎有变成 JavaScript 演变海洋中温暖港湾的趋势。
疯狂的技术宅
2019/03/27
1.4K0
React 教程:React 快速上手指南 [每日前端夜话0x2B]
react面试应该准备哪些题目
(2)如果已经创建了 Create React App 项目,需要将 typescript 引入到已有项目中
beifeng1996
2022/09/26
1.7K0
聊一聊 2024 年 React 生态系统
对于初学 React 的开发者,首先要面临的问题就是如何搭建一个 React 项目。市面上的工具众多,目前最受 React 社区欢迎的是 Vite。Vite 不仅支持多种库(如 React)与TypeScript 的结合使用,还具备出色的性能。
前端达人
2024/01/19
1.8K0
聊一聊 2024 年 React 生态系统
TypeScript 、React、 Redux和Ant-Design的最佳实践
阿特伍德定律,指的是any application that can be written in JavaScript, will eventually be written in JavaScript,意即“任何可以用JavaScript来写的应用,最终都将用JavaScript来写”在使用新技术的时候,切忌要一步一步的来,如果当你尝试把两门不熟悉的新技术一起结合使用,你很大概率会被按在地上摩擦,会yarn/npm和React脚手架等技术是前提,后面我会继续写PWA深入和Node.js集群负载均衡Ngi
Peter谭金杰
2019/08/02
3K0
TypeScript 、React、 Redux和Ant-Design的最佳实践
React - 入门:前导、环境、目录、原理
版本v16之后,对其底层的核心算法进行了重构,引入了底层的新引擎React Fiber(16版本以后的react)
xing.org1^
2019/10/14
1.1K0
React - 入门:前导、环境、目录、原理
函数式编程看React Hooks(一)简单React Hooks实现
函数式强调在逻辑处理中不变性。面向对象通过消息传递改变每个Object的内部状态。两者是截然不同的编程思想,都具有自己的优势,也因为如此,才使得我们从 class组件 转化到 函数组件式,有一些费解。
秋风的笔记
2020/10/27
1.9K0
函数式编程看React Hooks(一)简单React Hooks实现
相关推荐
React 基础
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档