-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Labels
每日一问每天一道面试题每天一道面试题
Description
React hooks 是React 16.8 的新增特性,它的出现主要是为了解决状态逻辑复用,涉及的主要业务场景如下:
- 1.复杂组件的状态跟操作分散在各个生命周期中,难以维护;hooks可以整合关联的处理逻辑到同一函数,各个关联逻辑可根据各自的状态的更新而触发执行。
- 2.组件之间相同的操作无法复用,而render props和HOC在解决复用问题同时却也导致了组件树层级过深;使用自定义hooks能让开发人员无需改变组件结构也能复用逻辑处理。
- 3.大量的使用class组件使react的编译特性无法发挥出来;使用hooks可以在不编写class的情况下使用state以及其他的React特性。
- 4.函数组件没有状态和生命周期,函数组件无法处理数据或其他复杂逻辑,主要基于传入的props来更新视图;使用hooks让函数组件拥有自己的状态,能独立处理逻辑。
- 5.类组件在使用中存在this指向、难以压缩导致的性能问题;hooks能使用react的特性同时免去class导致的问题。
React Hooks更容易将组件的 UI 与状态分离,多个状态不会产生嵌套,写法还是平铺的(renderProps 可以通过 compose 解决,可不但使用略为繁琐,而且因为强制封装一个新对象而增加了实体数量)。
Hooks 可以引用其他 Hooks。Hook 函数必须以 "use" 命名开头,因为这样才方便 eslint 做检查,防止用 condition 判断包裹 useHook 语句。
Metadata
Metadata
Assignees
Labels
每日一问每天一道面试题每天一道面试题