Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Anti Hook
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Mark24
March 25, 2020
Programming
90
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Anti Hook
You may not need Hook
Mark24
March 25, 2020
Transcript
38 slides
你可能不需要Hook @Mark 2020.03.25
Hook 是什么?
https://zh-hans.reactjs.org/docs/hooks-reference.html
None
useState模型 • 官⽅⽤法: https://codesandbox.io/s/react-hooks- demo-1-7lw3p • 简单实现:https://codesandbox.io/s/react-hooks- demo-2-4c92p
None
Flow&内部
None
实现 • 内部链表(理解成列表) ——> 单独储存 • 按顺序读取值,按顺序执⾏ hook (不断地rerender,状态 机)
• 触发更新,和 setState⼀样最后都进⼊ Fiber更新队列
优点 • 跨⽣命周期复⽤代码 • 你可以⾃定义Hook
本质:复⽤代码的尝试 PS:以函数为载体的复⽤
理论上
None
实际上
None
问题0:设计
违反单⼀,KISS原则
None
如果需要你学习很久,那其实 是很是失败的设计。 每个⼈理解的不⼀样。
问题1:可视化阅读
1.Class的⽣命周期,字⾯量划分被打 破。视觉阅读结束。 你需要去看每个函数式组件。 2.他并没有明显区分。
问题2:⼼智负担
1.Hook⾃⼰⽐较难理解 2.useEffect的官⽅介绍就要 70min
1.以前的组件⼼智模型⼀致 现在你需要知道Hook做了什么 你必须熟悉每⼀个Hook。 2.他⽤了什么state,还是context,他⽤了 effect还是什么 3.还有他⾃⼰写的Hook——毕竟这是跨⽣命周 期⾥⾯的复⽤。
问题3:滥⽤?闭包
1.你的代码会收获⼀⼤堆罗列在⼀起 的函 数。 2.看起来像极了C语⾔ 3.OO本身就是为了简化问题,这次反向倒⻋ 4.闭包是复杂的,潜在的内存泄漏
问题4:开发体验差
1.闭包,意味着你可能出现内存泄漏⽽ 不⾃制。轻轻松松写出有问题的代码。 2.⽆限循环之殇:写错了就要重启浏览 器。体验极差
问题5:代码真的少 了?
1.每⼀步都要追踪依赖,优化性 能,真的很麻烦 2.碎⽚化的useState未必真的好
你的开悟瞬间
⼀苇渡江 开悟时刻 技术的平衡游戏 平衡是编程⾥⾯的艺术
Hook也许不是为你准 备的
可能适合组件库 • 纯粹,⼀致性的组件。可以极⼤地发挥其复⽤性。 • 因为纯粹所以写不复杂。每个组件是健壮⽽⾼效的。
也许不适合业务
1.⾸先他不纯粹 2.易变化 3.琐碎且容⻓的业务逻辑 4.相似⼜不相关——并不能很好被复⽤ 5.可读性是业务代码中最重要的
理性拥抱新技术 新技术!==好技术 好技术===经得起时间考验的技术
参考资料 • 《useEffect 完整指南》https://overreacted.io/zh-hans/a- complete-guide-to-useeffect/ • https://github.com/brickspert/blog/issues/26 • https://github.com/donavon/hook-flow
More Decks by Mark24
See All by Mark24
DSL分享
mark24code
0
140
Rails初探
mark24code
0
67
Git恢复Force Push内容
mark24code
0
82
Other Decks in Programming
See All in Programming
Distance field of Julia set
kinakomoti321
0
320
AI-Powered Domain-Driven Design
ziobrando
0
440
Apple Intelligenceとオンデバイス時代の到来
yahir0
0
240
Growing PicoRuby's Ecosystem on ESP32
yuuu
2
120
Web3Dライブラリを作ってVue Custom Rendererの仕組みを理解しよう / lets learn vue custom renderer by making 3d library
drumath2237
1
130
作れるエンジニアから、価値を届けるエンジニアへ
ryunakayama
1
270
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
6
2.3k
Modernizing iOS Apps
seyfoyun
0
150
AI時代のシニアエンジニアとは
yosuke_furukawa
PRO
15
11k
Seven New Principles of Software Engineering
yegor256
0
480
GraphQL の onError と Nullability のこれから
quramy
0
210
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
3
1.7k
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1.1k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
330
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.9k
A Tale of Four Properties
chriscoyier
163
24k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
380
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.3k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Context Engineering - Making Every Token Count
addyosmani
9
1.3k
エンジニアに許された特別な時間の終わり
watany
109
250k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
300