跳转至

结束语 抓住本质,方能事半功倍

你好,我是王沛。

如果你留心的话,会发现我在这个专栏中,写得最多的一句话就是“如果我们从本质上来看”。没错儿,从本质出发思考问题,是我写这个专栏的初衷,也是我认为学习React Hooks 的正确打开方式。

所以在专栏的结束语这一篇,我就来和你聊聊“本质”这个话题。不过在聊“本质”这个略微有点虚的话题之前,我想先聊聊“认真”。因为在我看来,只有以一种认真的态度去做事,才能更好地深入到本质。在这里,我先分享一个我自己亲身经历的故事吧。

凡事须认真,方能有收获

我刚毕业时,有一次和一位前辈聊天,他说:“让我在公司混日子,我是做不到的。要么全力以赴,要么立马走人。”当时听到这话还挺震撼的,因为我总觉得这话说的就是我。

我当时所在的公司是知名外企,但同时也是别人口中的养老大厂。而自己做的事情,就是按部就班地完成任务。做得好与不好,似乎并不重要。感觉只要自己的技术能力还在,那么遇到棘手的问题,临时抱佛脚,突击一下也能解决。这好像是自己最有成就感的时候了。

但等一两年后,眼看着周围的同事一个个升职加薪,或者另寻高就。再看看自己,似乎还在原地踏步,工作氛围也是一片祥和。这才让我明白一个道理,“完成”和“认真完成”,在结果上有质的差别

而长期来看,在职业的发展上,甚至可以造成不可逾越的鸿沟。所以当你以为你用一段轻松的时光,换取了一份不错的收入,但实际上,错失的就是一个个快速成长的机会。

那么所谓的“认真”,在我看来,其实就是让自己保持一种在不断思考的状态,不是按部就班、没有想法地做事,而是主动思考问题。

抓住本质,让复杂事情简单化

我在面试与React相关的候选人时,都会问他们这样一个问题:为什么 Facebook 要发明 React Hooks?React Hooks 解决了什么问题?

这个问题其实不难,但凡对 React Hooks 有点了解,都可以说出个所以然来。比如,让代码更简洁、让代码更易维护、让开发效率更高,等等。

然而从这些回答中你会发现,这些候选人对 React Hooks 的理解还停留在表面,没有深入到本质。当然,如果你认真学完了我们这门课,答案其实也很简单:简化了逻辑重用

你可能会说,不去深究本质这样的问题,我照样能把 Hooks 用得很不错。

的确,当我们突然拿到一个临时的开发任务,或者要使用一个之前不熟悉的技术时,也许看下官方文档,就能解决当下的问题了。但是我想强调的是,理解了本质,你就相当于找到了问题之源,可以以不变应万变。

正如影片《教父》中那句广为人知的台词:“在一秒钟内看到本质的人和花半辈子也看不清一件事本质的人,自然是不一样的命运。”

同样地,能抓住React Hooks的本质,就能把复杂问题简单化,事半功倍。具体来说,抓住React Hooks的本质,至少能让你收获如下三方面的好处。

首先,能把 Hooks 用在更加正确的场景。如果只是停留在API形式上的使用,那么写出来的代码可能就不是很合适。如果等发现不合适再去修改,那浪费的精力就太多了。

其次,了解了本质,我们就能非常准确地知道这个Hook解决问题的出发点是什么,与原来方案相比有什么不同,从而提升开发效率。

事实上,当我们学习任何一个前端技术,也是一样的道理。从本质出发,帮助我们构建自己的知识体系,进而形成对技术的敏锐判断力。

要知道,在“轮子”层出不穷的前端圈,如何选择合适的技术就显得尤为重要。因为我们一直面临着这样的问题:这个新技术能解决什么问题?它的优缺点是什么?给项目带来的利多,还是弊多?我们到底该不该用?

而要回答诸如此类的问题,就需要我们洞察不同技术的本质,形成自己的判断,避免随波逐流。可以这样说,我们要学会看技术不是技术,而是要看其背后的思想和逻辑。再进一步,我们也就能够举一反三,用一套体系灵活应对不同的功能场景了。

多问为什么,帮你发现问题的本质

说了这么多关于本质的理解,那么到底怎么才能深入本质呢?这里想和你分享我从写专栏收获的一些心得。

对我个人而言,写完专栏,算是了了自己的一桩心愿。因为在我的脑海里,一直有一个关于 Hooks 课程的大概模样:不止是介绍 API 及其用法,而是更多地从本质出发,深入思考每一个API设计背后的思想和逻辑。当然,理想总是清晰且美好的。

在真正下笔的那一刻,才发现“教”远比“学”要艰难得多。我需要从教学的视角出发,不仅要呈现“是什么”,还要讲出“为什么”:

  • 我为什么要讲这个知识点,而不是那个?
  • 我为什么要以这个思路来讲?

通过不断追问为什么,来逐渐把握所要讲述的问题的本质。所以在我看来,深入本质,就是要非常朴实地去追问几个为什么。通过不断询问自己一个又一个为什么,我们就能更好地思考问题,从而获得更为深刻的洞察力。

所以在这门课的最后,我想说,学习没有捷径,只有通过多实践,多思考,才能获得高倍速地成长。所谓的躺平,那只是自嘲而已。

最后的最后,我也为你准备了一份毕业问卷,题目不多,希望你可以花一到两分钟填一下。十分期待能听到你的反馈,说说你对这门课程的想法和建议。

精选留言(15)
  • H 👍(4) 💬(2)

    这是我在极客唯一一门一直坚持学习到结束的课程; 不光是在技术层面的还是业务层面还是思考问题层面的,都有收到很多启发。 这就是白岩松说的:“一个人想要成长很快的话,要么谈一场轰轰烈烈的失败的或成功的恋爱,要么与一位长者老师深刻交流。” 目前学习还只是学习到了老师在课程中提到的表层概念,后面重复学习会思考老师的思考方式,达到“于老师深刻交流”的目的。 这段时间学习老师的课程进步很大, 谢谢老师的付出。

    2021-07-17

  • YuYu_Fish 👍(2) 💬(1)

    王老师的忠实粉丝,老师在极客时间上的两门课都学完了,期待老师的下一门课😜😜

    2021-08-12

  • Jerryz 👍(1) 💬(1)

    Hooks 之前,想要复用逻辑要用到高阶组件或者render props。Hooks 从特性层面支持了逻辑复用。Hooks也让函数组件成为React未来的主流。

    2021-07-19

  • H 👍(1) 💬(1)

    老师,毕业问卷链接打不开。

    2021-07-17

  • 腾挪 👍(1) 💬(1)

    我的良师益友,谢谢~

    2021-07-17

  • 灵感_idea 👍(0) 💬(0)

    有思考,有追求,是一名程序员越来越好的前提。 收获不少,还需多反复学习。

    2023-04-05

  • INFRA_UEX 👍(0) 💬(0)

    多谢老师,收益颇多。

    2022-11-08

  • WendySays 👍(0) 💬(0)

    是一门非常有收获的课程,感恩遇见,感谢陪伴。

    2022-08-20

  • kai666666.com 👍(0) 💬(0)

    毕业了。。。

    2022-06-28

  • 鲁滨逊 👍(0) 💬(0)

    专栏质量很高,适合我这种刚入行的新手,整体上由浅入深,娓娓道来。如果每一节或者每一章之后再补充一些热点话题或者阅读材料就更好了。

    2022-06-25

  • Lac 👍(0) 💬(0)

    打卡

    2022-04-12

  • joel 👍(0) 💬(0)

    打卡

    2022-04-10

  • MarkTang 👍(0) 💬(0)

    希望老师下次搞个Next.js的课程或者更深度一些的课程,期待下次课程

    2022-02-21

  • 张洪永 👍(0) 💬(0)

    打卡纪念

    2021-11-16

  • 👍(0) 💬(0)

    问个问题,usestate中的state可以更新ui,不过有异步(不能获取值等特点),在useCallback,useEffect中使用要加上依赖(否则可能闭包),useRef同步(可以获取值),不会动态更新ui,不用添加依赖,有些需求要用usestate和useRef来保存同一分值,是否合理,使用到了能否封装一个自定义hook

    2021-10-23