Skip to content

React为什么要搞Hooks,它帮我们解决了哪些问题? #9

@careteenL

Description

@careteenL

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

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions