-
HOOK是React 16.8的新增特性。它可以让你在不编写class的情况下使用state以及其他React特性。HOOK没出现之前,在函数式组件里面只能根据父组件传入的props做一些处理,现在HOOK出现,就可以在函数式组件里面使用state、生命周期等等。
-
在我们继续之前,请记住HOOK是:
-
完全可选的。你无需重写任何已有代码就可以在一些组件中尝试HOOK。但是如果你不想,你不必现在就去学习或使用HOOK。
-
100%向后兼容的。HOOK不包含任何破坏性改动。
-
现在可用。HOOK已发布于v16.8.0
-
没有计划从React中移出class
-
HOOK不会影响你对React概念的理解。掐掐相反,Hook为已知的React概念提供了更直接的API:props,state,context,refs以及生命周期。接下来的学习我们就会发现,HOO还提供了一种更强大的方式来组合他们。
-
React Hooks解决了什么问题?
《1》函数组件不能使用state,一般只用于一些简单无交互的组件,用作信息展示,即我们上面说的展示组件使用,如果需要交互更改状态等复杂逻辑时就需要使用class组件了。
React Hooks让我们更好的拥抱函数式编程,让函数式组件也能使用state功能,因为函数式组件比class组件更简洁好用,因为React Hooks的出现,相信未来我们会更多的使用函数式组件。
《2》副作用问题
* 我们一般称数据获取、订阅、定时执行任务、手动修改ReactDOM这些行为都可以称为副作用。而函数式组件处理不了。
* 由于React Hooks的出现,我们可以使用useEffect来处理组件副作用问题,所以我们的函数式组件也能进行副作用逻辑的处理了
《3》有状态的逻辑重用组件
《4》复杂的状态管理
* 之前我们使用redux、dva、mobx第三方状态管理器来进行复杂的状态管理
* 现在我们可以使用useReducer、userContext配合使用实现复杂的状态管理,不同再依赖第三方状态管理器
《5》开发效率和质量问题
* 函数式组件比class组件简洁,开发的体验更好,效率更高的同事应用性能也更好