掌握 React-Hooks 的正确姿势
Why -> What -> How
对于一个工程师来说,他对“Why”的执着程度,很大程度上能够反映其天花板的高度。
React-Hooks设计动机初探
它是 React 团队在真刀真枪的 React 组件开发实践中
逐渐认知到的一个改进点
背后涉及对类组件和函数组件的两种组件形式的思考和侧重
不应怀揣“孰优孰劣”这样的成见
而应该更多地去关注两者的不同
进而把不同的特性与不同的场景做连接
重新理解类组件:包裹在面向对象思想下的“重装战舰”
类组件
是面向对象编程思想的一种表征
深入理解函数组件:呼应 React 设计思想的“轻巧快艇”
函数组件会捕获 render 内部的状态,这是两类组件最大的不同。
React 组件本身的定位就是函数
一个吃进数据、吐出 UI 的函数
把声明式的代码转换为命令式的 DOM 操作
把数据层面的描述映射到用户可见的 UI 变化中去
虽然 props 本身是不可变的
但 this 却是可变的,this 上的数据是可以被修改的
函数组件真正的把数据和渲染结合到了一起
函数组件是一个更加匹配其设计理念、也更有利于逻辑拆分和重用的组件表达形式。
Hooks 的本质:一套能够使用函数组件更强大、更灵活的“钩子”
函数组件比类组件“少”了很多东西
给函数组件的使用带来了非常多的局限性
如果说函数组件是一台轻巧的快艇
那么 React-Hooks 就是一个内容丰富的零部件箱
允许你自由地选择和使用你需要的那些能力
构建对 React-Hooks 的整体认知
useState():为函数组件引入状态
useEffect(): 允许函数组件执行副作用
useEffect 则在一定程度上弥补了生命周期的缺席
Hooks 是如何帮助我们升级工作模式的?
- 告别难以理解的 Class
- 需要用实践层面去约束设计层面的东西
- 解决业务逻辑难以拆分的问题
- 不合理的逻辑规划方式:逻辑曾经一度与生命周期耦合在一起
- 可以按照逻辑上的关联拆分进不同的函数组件里
- Hooks 能够帮助我们实现业务逻辑的聚合避免复杂的组件和冗余的代码
- 使用状态逻辑复用变得简单可行
- Hooks 可以视作是 React 为解决状态逻辑复用这个问题所提供的一个原生途径,现在我们可以通过自定义 Hook,达到既不破坏组件结构、又能够实现逻辑复用的效果
- 函数组件从设计思想上来看更加契合 React 的理念
保持清醒:Hooks 并非万能
事事无绝对,凡事皆有两面性。
Hooks 的局限性
- Hooks 暂时还不能完全地为函数组件补齐类组件的能力
- “轻量”几乎是函数组件的基因,这可能会使它不能够很好地消化“复杂”
- Hooks 在使用层面有着严格的规则约束