Hook
React16.8以后才支持;
动机
解决组件之间复用状态逻辑管理很难;
复杂组件变得难以理解;
Class难以理解, React Hook拥抱函数式编程思想;
简单案例
使用create-react-app创建项目:
1 | import React, { useState } from "react"; |
Hook 使用的注意事项
- 只能在函数中使用Hook,不能再class中使用
- 只能在函数最外层调用Hook,不要在循环、条件判断或者子函数中调用
- 只能在react的函数组件中调用Hook,不要在其他Javascript函数中调用
UseState的使用
1 | const [state, setState] = useState(initialState); |
返回一个 state
,以及更新 state
的函数。
在初始渲染期间,返回的状态 (state
) 与传入的第一个参数 (initialState
) 值相同。
setState
函数用于更新 state。它接收一个新的 state 值并将组件的一次重新渲染加入队列。
两种更新方式
直接调用setState传入更新的数据
对于复杂的更新逻辑使用函数式更新
1
setState(()=>state+1)
如果定义的初始数据是引用类型,使用函数更新结合扩展运算符
1 | const [state, setState] = useState({}); |
useState惰性初始化
如果更新的数据与上次一样,React将会跳过子组件的渲染及effect的执行。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Apostle!