React-封装自定义Hook

1.声明函数

说明:声明一个以use打头的函数

javascript 复制代码
function useToggle(){
 
}

2.封装

说明:在函数体内封装可复用的逻辑

javascript 复制代码
  const [value,setValue]=useState(true)
  const toggle=()=>{
    setValue(!value)
  }

3.返回

说明:把组件中用到的状态或者回调return

javascript 复制代码
  return {
    value,toggle
  }

4.解构

说明:组件中用到这个逻辑,就执行这个函数同时解构出变量

javascript 复制代码
const {value,toggle}=useToggle()

5.源码

javascript 复制代码
//封装自定义Hook 
// 问题 :布尔值的逻辑 当前组件耦合在一起的 不方便复用


import { useState } from "react";


function useToggle(){
  const [value,setValue]=useState(true)
  const toggle=()=>{
    setValue(!value)
  }
  return {
    value,toggle
  }
}

function App() {
const {value,toggle}=useToggle()

  return (
    <div>
   { value&&<div>this is div</div>} 
    <button onClick={toggle}>toggle</button>
    </div>
  );
}

export default App;

6.使用规则

说明: 只能在组件中或者其他自定义Hook函数中调用;只能在组件的顶层调用,不能在if、for、其他函数中调用函数。

相关推荐
014-code几秒前
Vue 中 data 为什么是函数而不是对象?
前端·javascript·vue.js
下北沢美食家8 分钟前
HTML面试题
前端·html
巴巴博一11 分钟前
UniApp 纯前端实现企业级购物车:Vuex + Storage 多用户状态管理闭环方案
前端·vue.js·uni-app·状态模式
浮桥14 分钟前
uniapp页面列表列表请求hook记录
前端·javascript·uni-app
bluceli15 分钟前
前端微前端架构实战指南:构建可扩展的大型应用架构
前端
阿懂在掘金16 分钟前
Vue Asyncx 库三周年,回顾起源时的三十行代码
前端·typescript·开源
一只不会编程的猫16 分钟前
Echart 3D环形图
前端·javascript·3d
脸大是真的好~16 分钟前
黑马AI+前端教程 01-HTML-Trae-F12-live Server-标签-块级和内联元素-图片格式-路径
前端·html
前端付豪17 分钟前
拍照识题 OCR
前端·后端·python
专业流量卡18 分钟前
龙虾写useEffect源码第二天
前端