React Hooks简介
在React 16.8中引入了React Hooks概念,之前state只能在类组件中定义,有了Hooks后,可以在函数组件中使用state以及其它React特性。
Hooks 使你在非 class 的情况下可以使用更多的 React 特性。 从概念上讲,React 组件一直更像是函数。而 Hooks 则拥抱了函数,同时也没有牺牲 React 的精神原则。
Hooks 是一些可以让你在函数组件里“钩入” React State 及生命周期等特性的函数。Hooks 不能在 class 组件中使用 —— 这使得你不使用 class 也能使用 React。
为什么使用Hooks?
类组件的缺点:
- 需要更好的理解this关键字在JavaScript中的作用
- 类组件中需要绑定事件
- 类组件体积庞大,同时热加载不可靠
- 数据获取和事件过程分散在不同的生命周期方法里,比如数据可以在
ComponentDidMount
方法中获取也可以在ComponentDidUpdate
方法中更新;事件在ComponentDidMount
方法中创建,在ComponentWillUnmount
方法中销毁。
Hooks使用规则
- 只能在函数最外层调用 Hook。不要在循环、条件判断或者子函数中调用。
- 只能在 React 的函数组件或者自定义Hook中调用 Hook。
总结
- 想使用React Hooks必须使用React 16.8或者更高版本,可以选择使用Hooks也可以选择继续使用类组件。
- React Hooks是100%向后兼容的,不需要把之前的类组件使用Hooks重构。
- 使用Hooks可以获得React所有特性,而不用编写类组件。
- 不能在类组件中使用React Hooks。
- Hooks 将组件中相互关联的部分拆分成更小的函数(比如设置订阅或请求数据),而并非强制按照生命周期划分。你还可以使用 reducer 来管理组件的内部状态,使其更加可预测。