Hooks 是 React 16.8的新特性。使用Hooks,咱们不用去写Class也能使用state,还有一些其余的React特性。html
import React, { useState } from 'react';
function Example() {
// 在这里咱们声明了一个新的state变量,叫count
const [count, setCount] = useState(0);
return (
<div> <p>You clicked {count} times</p> <button onClick={() => setCount(count + 1)}> Click me </button> </div>
);
}
复制代码
useState是咱们第一个接触到的Hook,没看懂这个例子也不要紧。后面会继续介绍。react
你能够在下一页直接开始学习Hooks。在这篇文章中,咱们将会介绍为何要引入Hooks,以及如何使用Hooks帮助咱们更好的编写组件。git
Notegithub
React 16.8.0是第一个支持Hooks的版本。升级时,不要忘记更新全部包,包括React DOM。 React Native将在下一个稳定版本中支持Hook。ide
在React Conf 2018中,Sophie Alpert和Dan Abramov介绍了Hooks,随后Ryan Florence演示了如何重构应用程序以使用它们。观看视频:函数
Hooks是测试
解决了不少问题。好比:优化
React没有提供将可复用的行为(reusable behavior)附加到组件上的方法,好比链接一个store。ui
Hooks的优点:
能够把有关state的逻辑从组件中抽离出来,而且不改变组件的层级结构。这样对代码的复用和测试都更友好。
We’ll discuss this more in Building Your Own Hooks.
组件刚开始写很简单,可是有关state的逻辑和反作用越写越多,组件就变得难以管理
由于组件里面有关state的逻辑处处都是,因此不少状况下咱们没法将组件拆分红更小的组件,而且这样也不利于测试。这就是不少人更喜欢将React和单独的状态管理的库结合的缘由之一。
Hook的优点:
能够将组件基于逻辑的关联性拆分红更小的函数,好比说订阅消息、获取数据之类的,而不是基于生命周期拆分相关逻辑。你也能够经过一个reducer来管理组件的内部state
class语法让人疑惑,好比下面这几个方面:
因此咱们想要推出能让代码更优化的API。
Hook的优点:
class看起来很差,用Hook能够不写class
没有从React中移除class的计划
对于有好奇心的读者,咱们准备了这篇来深刻更多的细节