【React】自定义hook函数

1. 概念

本质:函数

2. 例子

  • 需求:实现点击按钮的展示与隐藏子组件
2.1 不封装直接实现
javascript 复制代码
import { useState } from 'react'
function Son() {
  return <div>子组件</div>
}

function App() {
  const [isShow, setIsShow] = useState(true)
  function toggle() {
    setIsShow(!isShow)
  }
  return (
    <div className="App">
      {isShow && <Son />}
      <button onClick={toggle}>点击我,隐藏子组件</button>
    </div>
  );
}

export default App;
2.2 封装自定义hook实现
javascript 复制代码
import { useState } from 'react'
function Son() {
  return <div>子组件</div>
}

function useToggle() {
  const [isShow, setIsShow] = useState(true)
  function toggle() {
    setIsShow(!isShow)
  }
  return {
    isShow,
    toggle
  }
}

function App() {
  const { isShow, toggle } = useToggle()
  return (
    <div className="App">
      {isShow && <Son />}
      <button onClick={toggle}>点击我,隐藏子组件</button>
    </div>
  );
}

export default App;

3 总结(封装自定义hook通用思路)

  1. 声明一个use开头的函数
  2. 在函数体内封装可复用的逻辑
  3. 把组件中用到的状态或者回调return出去(以对象或者数组的形式)
  4. 在哪个组件中要用到这个逻辑,就执行这个函数,解构出状态和回调进行使用
4 参考

黑马程序员react教程

相关推荐
界面开发小八哥31 分钟前
数据可视化图表库LightningChart JS v8.0上线:全新图例系统 + 数据集重构
javascript·信息可视化·数据可视化·lightningchart
烛阴1 小时前
【TS 设计模式完全指南】从“入门”到“劝退”,彻底搞懂单例模式
javascript·设计模式·typescript
正义的大古1 小时前
OpenLayers常用控件 -- 章节六:全屏控件教程
前端·javascript·html·openlayers
正义的大古3 小时前
OpenLayers常用控件 -- 章节七:测量工具控件教程
前端·javascript·vue.js·openlayers
雲墨款哥4 小时前
一个前端开发者的救赎之路-JS基础回顾(五)-数组
前端·javascript·面试
朱程4 小时前
深入JS(一):手写 Promise
前端·javascript
EndingCoder5 小时前
Electron 性能优化:内存管理和渲染效率
javascript·性能优化·electron·前端框架
牛十二5 小时前
mac-intel操作系统go-stock项目(股票分析工具)安装与配置指南
开发语言·前端·javascript
kk不中嘞7 小时前
浅谈前端框架
前端·vue.js·react.js·前端框架
yanlele8 小时前
前端面试第 78 期 - 2025.09.07 更新 Nginx 专题面试总结(12 道题)
前端·javascript·面试