hooks

89 阅读1分钟

为什么要用hooks

Hook 本质就是 JavaScript 函数,hooks" 直译是 “钩子”,它并不仅是在react中,通常指:

系统运行到某一时期时,会调用被注册到该时机的回调函数。

比较常见的钩子有:windows系统的钩子能监听到系统的各种事件,浏览器提供的onload或 addEventListener能注册在浏览器各种时机被调用的方法。

在react中,hooks是:

一系列以“use”作为开头的方法,它们提供了让你可以完全避开 class式写法,在函数式组件中完成生命周期、状态管理、逻辑复用等几乎全部组件开发工作的能力。就是一系列方法,提供了在函数式组件中完成开发工作的能力。

怎么使用hooks

微信截图_20220620165552.png

hooks的命名都是已use开头的,我们约定以use开头并紧跟着一个大写字母的函数就是一个 Hook, 并且只在React函数组件中调用 Hook,而不在普通函数中调用 Hook

tips:在react中,需要大于16.8版本,在vue中,需要3版本

在react中使用hooks

// 一个函数式组件
import { useState, useEffect } from 'React'

export default () => {
  // 通过 useState 可以创建一个 状态属性 和一个赋值方法
  const [ name, setName ] = useState('')

  // 通过 useEffect 可以对副作用进行处理
  useEffect(() => {
    console.log(name)
  }, [ name ])

  // 通过 useMemo 能生成一个依赖 name 的变量 message
  const message = useMemo(() => {
    return `hello, my name is ${name}`
  }, [name])

  return <div>{ message }</div>
}

在vue中使用hooks

// vue中的hooks依赖于组合式API
<template>
  <div>
    {{ message }}
  </div>
</template>
<script setup>
import { computed, ref } from 'vue'
// 定义了一个 ref 对象
const name = ref('')
// 定义了一个依赖 name.value 的计算属性
const message = computed(() => {
  return `hello, my name is ${name.value}`
})
</script>