来自我在知🐒一个问题的回答:www.zhihu.com/question/44…
-
Hooks 确实有「坑」,比如 deps 补全,虽编辑器提醒,但有兽新加逻辑害会忘,而且 deps 一多,代码就一坨。
-
「deps 多了可以拆分逻辑鸭,这是 Hooks 附带的一个优点,帮你更好的组织代码」—— 这马上陷入另一个麻烦,逻辑拆越细,代码就越「散」越「长」,一眼看过去老眼昏花。
-
「代码长了可以拆分组件鸭,这是 Hooks 附带的一个优点,帮你更好的拆分组件」—— 这马上陷入另一个编程学难题,就是代码不是「最近」原则,项目一大,就陷入溯文件、找代码、理逻辑的黑洞。要改一点逻辑,得挨个把亲戚盆友们都改一遍。
-
当然,改的时候,每个组件里 useEffect、useMemo、useCallback 的 deps,请不要遗忘 …
-
纯视觉清晰来说,变量与函数混一起,写在一个函数里,很容易头大,怎么组织代码也成了纯个人爱好,是就近原则,还是同类原则,没撒最佳实践。还是 class 组件里 state 与 methods 隔离看起来清晰。
-
当然,Hooks 最大的一个心智挑战,其实是之前写的一段话:
ReactHooks为撒难搞?其心智模型反复提到「声明式」编程,区别于「命令式」编程。光整名词还是迷惑,举个例子,1.「命令式」就你开车,你想停停想走走,车是你命令的,除非车情绪崩溃,不然不可能突然失控,2.「声明式」就 Tesla 自动驾驶,声明了各种各样边界条件,然后让车在声明下运行 —— 看看 Tesla 的一些自动驾驶失控新闻,能理解为撒Hooks让人心有余悸了吗?—— 你总担心一些边界条件没考虑到,就像 Autopilot 工程师担心的一样。
-
Hooks 附带的一个焦虑,就是总觉得代码是可以「优化」的,总觉得可能哪里 deps 没搞对,总觉得还可以再抢救一下,总觉得再努力一下就出任 CEO 走向人生巅峰 … 骚瑞跑题了。总之,太多样板代码,跟 Redux 似的,写逻辑的快感全被卷入了 memo 无底洞里。
-
吐槽完了,你说用不用 Hooks?那该用害得用,资本的政治正确是「增长」,互联网的政治正确是追新、是折腾、是 revolution。这些有撒意义?其实人生本来也没撒意义,所以才折腾,让生活有点事可干,他盖房子你买房,他写框架你研究,分工明确,都有美好前途。
-
回到这个问题,老大哥不让搞,咋整?Hooks 和 class 又不矛盾,可以共存的。别看是写代码,其实这也是「改革」,任何改革都涉及到利益、业务能力、协调能力 —— 1️⃣ 利益就老大哥都希望一直活在自己的现有利益舒适圈里,别瞎折腾;2️⃣ 业务能力就你改了能保证基本没撒问题,别人不爽但也抓不到把柄,甚至还能吹出亮点;3️⃣ 协调能力就即使业务能力一般,但也有张能说会道的小嘴,能说服老板,能协调到同路小伙伴,能协调到 QA,能画饼,能渐进式,能摸着石头过河。当然,最好是业务和协调能力都很好。
-
如果撒都没有,只有热情,那就先自个折腾,别捅问题,因为改革的特点就是:改好了没人夸,改坏了谁都骂。当然,也可以试探性的迈迈小碎步,看看有没有人说,有人说当然也正常,这是锻炼协调能力的时候,工作从来不是技术嘛,工作是人与人的政治艺术。不过永远记着:别太把眼前界限放心上,打开 GitHub,你就能随时师承世界顶级工程师,别自降上限,把某个 18 线 CSDN 程序员的话当真理。实在不行,就换个环境,找到适合自己的 context,也不是非要把石头变成牛奶嘛,换个地方去喝牛奶就行了。如果你真的追求卓越,那么这些都不是问题。