一、Hook 的优点

React Hook 是 React 16.8 的新特性,目的是希望让函数组件代替 class 组件使用,做这样的代替有什么好处呢?

  • 没有了 this,少了很多心智负担
  • 不用写长长的一段声明 extends React.Component 和 constructor 等,让组件变得更轻量

既然是代替,那就需要让函数组件一样,还需要有这些

  • 内部的 state
  • 生命周期钩子

二、Hook 核心用法

useState 来模拟内部 state

  1. const [count,setCount] = useState(0)
  2. const [age,setage] = useState(20)

useEffect 来模拟生命周期钩子

  1. // 相当于 componentDidMount 和 componentDidUpdate
  2. useEffect(()=>{
  3. console.log('lift cycle')
  4. }) //监控所有 state
  1. useEffect(()=>{
  2. console.log('组件首次挂载和状态更新时执行')
  3. return ()=>{
  4. console.log('状态更新和组件卸载时执行')
  5. }
  6. },[count]) // 只监控 count 状态
  1. useEffect(()=>{
  2. console.log('组件首次挂载时执行')
  3. return ()=>{
  4. console.log('组件卸载时执行')
  5. }
  6. },[]) // 都不监控

遇到这种写法不要惊讶

  1. useEffect(()=>()=>{
  2. console.log('组件卸载时执行')
  3. },[]) // 都不监控

三、Hook 规则

只在最顶层使用 Hook,不要在条件和嵌套中调用 Hook

「@浪里淘沙的小法师」