Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

我的 react 学习计划 #22

Open
jingzhiMo opened this issue Mar 31, 2020 · 0 comments
Open

我的 react 学习计划 #22

jingzhiMo opened this issue Mar 31, 2020 · 0 comments

Comments

@jingzhiMo
Copy link
Owner

jingzhiMo commented Mar 31, 2020

在之前一段时间中,我这边在补充 React 的技术栈(不会 React 都不好意思说自己搞前端了?)。下面分享一下我这边的学习的过程,还有一些学习过程中觉得不错的学习文章。主要是 React 技术栈与 Typescript 的应用。

背景

在决定系统学习 React 的技术栈之前,其实对 React 的使用也有比较一些低层级的使用,所以是有一些比较浅的认识。因为也工作了不短时间了,在工作的工程中,在前端框架方面使用,前期是ng1.x,后面主用vue了。所以对前端框架的使用也是有一定经验。而对 Typescript 的使用,之前也有完整学习了一遍并做了一些简要的学习笔记。所以基于之前零散的学习,现在就开始系统学习一波吧,整理之前的知识。

计划

先定个小目标,这次学习的目的是:系统整合 React 技术栈与 Typescript 的使用。

学习的载体:选一个自己熟悉项目,用这个项目来重构;或者选一个需求明确的产品。我觉得这个挺重要的,如果在开发过程中还要纠结各种需求问题,就与我们目标有偏移。我是选择了一个熟悉的产品并重构部分,一来可以反思之前的问题,二来因为熟悉需求,减少在上面耗费的其他精力。

开始需要列一下学习路线图roadmap,可能不需要很精确,主线清晰就ok了,学习的过程中有时候需要不断调整。下面是我这边前期的学习路线:

    • 使用create-react-app --typescript 创建项目
    • 实现页面基本框架组件
    • 选择组件接入redux
    • 加入不同的页面组件
    • 页面接入react-router
    • 接入mock数据
    • 请求逻辑接入,深入了解redux,涉及异步请求与中间件等
    • 编写公共的hook, 了解hook原理
    • 接入部分请求逻辑
    • 接入路由
    • 接入复杂条件,熟悉父子组件通信形式
    • 展现数据,结合实际情况,把核心页面还原逻辑
    • 接入用户状态设置
    • 尝试扩展页面,复用代码

这里列的都是一些基本点,每一个基本点展开都是非常多的。所以在这个过程中,建议多阅读 React 官方文档,通常开始会对一些方法与使用姿势不对。通过多阅读文档,可以在涉猎对应场景之前,就能够提前有个认知;因为长时间使用其他的框架,容易造成把不同框架的使用姿势强行结合,导致使用不当先忘记之前所学的

如果完成上述的基本路线图,就基本把 React 的常见使用入门了。这就完了?不不

通常你在上面每个阶段都会遇到各种问题;而且需要对每一步的处理进行反思,记录下来之后,需要进一步深入。

参考与反思

  1. 例如在第一步进行创建的时候,使用create-react-app的时候,可能会想到,这个工具是怎么实现的,怎么做到开箱即用,具体原理可以看文章create-react-app原理。还有结合第 6 步,如果加入mockServer的话,增加配置不容易,那么通过eject命令把配置都导出,自己重新去更改?还是通过react-app-rewired工具去更改cra的流程呢?这些在实际项目中可能得根据具体情况进行不同处理。

  2. 在使用redux的时候,是否有思考内部是怎样实现的,还有与vuex进行区别。如果仅使用redux,不使用辅助工具的话,项目会很困难,所以又有了react-redux的官方工具库,用于把 Reactredux 连结起来。并内置部分优化,那是否也看一下react-redux内置的优化是什么呢?

  3. 在接入react-router的时候,通常会涉及一些懒加载的处理,除了路由层面对页面懒加载,是否也有一些对组件进行懒加载?另外,对路由的实现是否也需要看一下呢?对于historyhash的兼容是怎样的?不同路由组件间怎么同步相同的路由数据?

  4. hook的使用相对会与之前的生命周期钩子有点不太一样,当尝试复用自己写的hook的时候,你可能会发现,一个名为react-use的工具库非常实用,里面涵盖了非常的常见工具hook,当没有思路编写自己的业务hook,不妨上去找一下代码与灵感。可能不写过几个死循环,都很难把hook使用到点,对于掌握hook,可能真的需要“把之前学到的都忘掉”。才能发挥更好的效果。

  5. 结合 Typescript 来使用,把两个不太熟练的东西一起使用也会大大增大难度;可能会发现,使用 js 就搞定了,但是使用 ts 的时候,在类型定义,还有引用第三方库会非常难理解,在这里有可能浪费挺多时间。这通常源于对 ts 的类型系统与部分默认定义类型的不熟悉;解决几个相似的提示之后,到后面解决起来就会很快了。

文章推荐

下面是一些解决部分问题比较不错的文章与回答,在这个学习过程所记录:

例子代码:

个人部分写的文章,见笑了:

小结

这次的文章比较短,大多数是在描述一些在学习过程产生的一些疑问,与带入的一些解决方法。这些疑问是我们在学习的时候深究的来源。最开始的时候我也尝试过直接去阅读源码,但是发现 React 的源码实在太多了,如果没有一定的使用基础还有对一些常见概念熟悉的话,根本看不下去;为了看源码而看源码得不偿失。当在开发过程遇到部分问题之后,带着这些小问题,再去局部局部的深入;然后对之前所学的知识点作归纳,知识梳理起来就会有条理。那样子解决问题起来才能够得心应手。完!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant