React-hooks

什么是hooks

可以理解为通过 Hooks 为函数组件钩入 class 组件的特性,有了 Hooks 以后,不能再把函数组件称为无状态组件了,因为 Hooks 为函数组件提供了状态

useState基本使用

作用:

为函数组件提供状态(state)

import { useState } from 'react'

// 参数:状态初始值
// num代表定义的值,setnum修改值得方法
const {num, setnum} = useState(0)

例如:

import { useState } from 'react'

// 参数:状态初始值
// num代表定义的值,setnum修改值得方法
const {num, setnum} = useState(0)
num为0
setnum(1) // num为1
useState 等 Hook 的使用规则:
  • React Hooks 只能直接出现在 函数组件 中
  • React Hooks不能嵌套在 if/for/其他函数 中
  • useState Hook 多次调用返回的 [state, setState],相互之间,互不影响

useEffect

执行时机:

该 effect 会在组件第一次渲染以及每次组件更新后执行(componentDidMount + componentDidUpdate)

作用:

处理副作用(在计算机科学中,如果一个函数或其他操作修改了其局部环境之外的状态变量值,那么它就被称为有副作用用)
常见的副作用(side effect):数据(Ajax)请求、手动修改 DOM、localStorage、console.log 操作等

基本使用-语法总结
// 1
// 触发时机:1 第一次渲染会执行 2 每次组件重新渲染都会再次执行
// componentDidMount + ComponentDidUpdate
useEffect(() => {})

// 2(使用频率最高)
// 触发时机:只在组件第一次渲染时执行
// componentDidMount
useEffect(() => {}, [])

// 3(使用频率最高)
// 触发时机:1 第一次渲染会执行 2 当 count 变化时会再次执行
// componentDidMount + componentDidUpdate(判断 count 有没有改变)
useEffect(() => {}, [count])

// 4
useEffect(() => {
  // 返回值函数的执行时机:组件卸载时
  // 在返回的函数中,清理工作
  return () => {
  	// 相当于 componentWillUnmount
  }
}, [])

useEffect(() => {
  
  // 返回值函数的执行时机:1 组件卸载时 2 count 变化时
  // 在返回的函数中,清理工作
  return () => {}
}, [count])
useEffect第二个参数(可选,也可以传一个数组,数组中的元素可以成为依赖项(deps) )
useEffect(() => {
    document.title = `当前已点击 ${count}`
  }, [count]) //只有count改变才会引起useEffect执行

useEffect 的第二个参数,还可以是一个空数组([]),表示只在组件第一次渲染后执行 effect
使用场景:
1 事件绑定
2 发送请求获取数据 等
该 effect 只会在组件第一次渲染后执行,因此,可以执行像事件绑定等只需要执行一次的操作

useEffect-清理工作

effect 的返回值是可选的,可省略。也可以返回一个清理函数,用来执行事件解绑等清理操作

清理函数的执行时机:
  • 清理函数会在组件卸载时以及下一次副作用回调函数调用的时候执行,用于清除上一次的副作用。
  • 如果依赖项为空数组,那么会在组件卸载时会执行。相当于组件的componetWillUnmount
useEffect(() => {
  const handleResize = () => {}
  window.addEventListener('resize', handleResize)
  
  // 这个返回的函数,会在该组件卸载时来执行
  // 因此,可以去执行一些清理操作,比如,解绑 window 的事件、清理定时器 等
  return () => window.removeEventListener('resize', handleResize)
}, [])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值