今天抽空学习了react Hook的相关知识,于是整理成博客记录一下相关比较重要的知识点,如果有什么不对的地方欢迎指正,废话不多说,我们马上进入正题。
1.什么是Hook
官网上的解释是:Hook是React16.8的新增特性,它可以让你在不编写class的情况下使用state以及其他的React特性。我们知道在函数式声明的组件中是没有类声明组件中所用到的state和生命周期等等特性的,Hook帮助我们解决了这样一个问题,在函数式声明的组件中也可以使用state以及其他的React特性(如useEffect,useReducer,useContext等,具体用法可参阅官方文档)。
2.State Hook
2.1基本用法
如果你在编写函数组件的时候需要向其添加一些state,以前的做法是必须将其转化为class,现在你可以在现有的函数组件中使用Hook。我们看下面这个例子:
import React, { useState } from 'react';
function Example() {
// 声明一个叫 "count" 的 state 变量
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
这个段代码与下面的类组件写法类似:
class Example extends React.Component {
constructor(props) {
super(props);
this.state = {
count: 0
};
}
render() {
return (
<div>
<p>You clicked {this.state.count} times</p>
<button onClick={() => this.setState({ count: this.state.count + 1 })}>
Click me
</button>
</div>
);
}
}
这里我们声明了一个count的state变量,并把它初始化为0;useState方法用来定义state变量,它接收唯一的参数,也就是初试的state,接收的参数形式可以是对象、数字、字符串、数组等,useState方法返回当前的state以及更新state的函数,这就是我们写
const [count, setC