没用hook之前:
1 组件之间复用状态逻辑很难,React 没有提供将可复用性行为“附加”到组件的途径(例如,把组件连接到 store)。也有解决方案,例如:比如 render props 和 高阶组件。但是这类方案需要重新组织组件结构,会很麻烦,使代码难以理解。由 providers,consumers,高阶组件,render props 等其他抽象层组成的组件会形成“嵌套地狱”。(mixins)缺点:数据管理混乱,方法和属性难以溯源。
2复杂组件难以理解
3除了代码复用和代码管理会遇到困难外,this问题也是对初级开发者的一大屏障,必须去理解 JavaScript 中 this 的工作方式,这与其他语言存在巨大差异。还不能忘记绑定事件处理器。这些代码非常冗余。大家可以很好地理解 props,state 和自顶向下的数据流,但对 class 却一筹莫展。即便有经验的开发者,对于函数组件与 class 组件的差异也存在分歧,甚至还要区分两种组件的使用场景
hooks定义:系统运行到某一时期时,会调用被注册到该时机的回调函数。 在函数式组件中完成生命周期、状态管理、逻辑复用等几乎全部组件开发工作的能力。
优点:
- 方法和属性好追溯吗?这可太好了,谁产生的,哪儿来的一目了然。
- 会有重名、覆盖问题吗?完全没有!内部的变量在闭包内,返回的变量支持定义别名。
(更好的状态管理,更好的代码组织,更好的开发体验(没有this)