React 18 自定义Hook实现

React 自定义Hook实现

概念:自定义Hook是以 use打头的函数,通过自定义Hook函数可以用来实现逻辑的封装和复用

在这里插入图片描述

封装自定义hook通用思路:

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

代码实现:

// 问题: 布尔切换的逻辑 当前组件耦合在一起的 不方便复用

// 解决思路: 自定义hook

import { useState } from "react"

// 封装自定义Hook
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

React Hooks 的使用规则

  1. 只能在组件中或者其他自定义Hook函数中调用;
  2. 只能在组件的顶层调用,不能嵌套在if、for、其它的函数中

在这里插入图片描述

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
react自定义hook实现非常简单。你只需要将常规的函数和逻辑包装在一个名称以 use 开头的函数里面,就可以将其作为自定义 hook 使用。例如,下面是一个 useEffect 自定义 hook 的示例代码: ``` import React, { useState, useEffect } from 'react'; function useCustomHook(myValue) { const [count, setCount] = useState(0); useEffect(() => { console.log(`my value is: ${myValue}`); console.log(`count is: ${count}`); }, [count, myValue]); function handlePlus() { setCount(count + 1); } function handleMinus() { setCount(count - 1); } return { count, handlePlus, handleMinus, }; } ``` 在这里,我们创建了一个名为 useCustomHook 的函数。该函数接受一个名为 myValue 的参数。我们在 useCustomHook 函数中使用 useState 和 useEffect。我们返回一个对象,该对象包含 count 值以及处理加法和减法的函数。 接下来,您可以将 useCustomHook 导入包含您的 react 程序的文件,并使用对它调用以前定义的函数来调用它。例如: ``` import React from 'react'; import { useCustomHook } from './useCustomHook'; function App() { const { count, handlePlus, handleMinus } = useCustomHook('my value'); return ( <div> <p>Count is: {count}</p> <button onClick={handlePlus}>Plus</button> <button onClick={handleMinus}>Minus</button> </div> ); } export default App; ``` 在这里,我们导入 useCustomHook,然后从调用它的返回对象中提取 count、处理加法和减法的函数。 这就是一个简单的自定义 hook 的范例。你可以创建任意数量的自定义 hook,从而封装 React 组件中的常见逻辑和代码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值