Hooks是react16.8版本新增的特性 ,可以让你在函数组件中使用state以及其他Reat的特性
react中常用的三个Hook
(1)React.useState()
(2)React.useEffect()
(3)React.useRef()一.useState()
1.State Hook让函数组件也可以有state状态, 并进行状态数据的读写操作语法: const [xxx, setXxx] = React.useState(initValue)
useState()说明:参数: 第一次初始化指定的值在内部作缓存返回值: 包含2个元素的数组, 第1个为内部当前状态值, 第2个为更新状态值的函数
setXxx()2种写法: setXxx(newValue): 参数为非函数值, 直接指定新的状态值, 内部用其覆盖原来的状态值 setXxx(value => newValue): 参数为函数, 接收原本的状态值, 返回新的状态值, 内部用其覆盖原来的状态值
二.useEffect()
由于函数数组件中不能使用生命周期 ,所以用useEffect()在函数中1)Effect Hook 可以让你在函数组件中执行副作用操作(用于模拟类组件中的生命周期钩子) (2)Reactz中的副作用 操作发ajax请求数据获取,设置订阅、启动定时器,手动修改真实DOM (3)语法和说明:useEffect(() =>{ //在此可以执行任何带副作用操作(发ajax请求数据获取,设置订阅、启动定时器,手动修改真实DOM) return () => { //组件卸载前执行 //在此做一些收尾工作,比如清除定时器/取消订阅等 } },[stateValue]) //如果指定的是[],回调函数只会在第一次render()后执行 (4)可以把useEffect Hook看做如下 三个函数的组合 componentDidMount():一般在这个钩子中做一些初始化的事,例如:开启定时器、发送网络请求、订阅消息 componentDidUpdate():更新阶段 componentWillUnmount():一般在这个钩子中做一些收尾的事,例如:关闭定时器、取消订阅消息
三.useRef()
(1) Ref Hook 可以在函数最贱汇总存储 /查找组件内的标签或任意其他数据 (2) 语法:const refContainer = useRef() (3) 作用保存标签对象,功能与React.createRef()一样
function App(){
//count:当前状态值,setCount:更新状态值的函数
const [count,setCount] =React.useState(0)
const [name,setName] =React.useState('邓紫棋')
//回调
function add(){
//第一中写法
// setCount(count+1)
//第二中写法,函数
setCount(count => count+1)
}
function changeName(){
setName(name=>'周杰轮')
}
return(
<div>
<h2>当前求和为:{count}</h2>
<h2>我的名字是:{name}</h2>
<button onClick={add}>点我加1</button>
<button onClick={changeName}>点我改名</button>
</div>
)
}
export default App