广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >每天一个hooks学习之useUnmount
  • 720
分享到

每天一个hooks学习之useUnmount

hooks useUnmounthooks 学习 2023-05-19 12:05:20 720人浏览 安东尼
摘要

目录引言🦌来看看效果🐿源码实现🐬完整demo源码🍓参考引言 useUnmount,组件卸载时执行的 Hook,比如组件卸载时,需要清除定时器或者相关的监听,就可以使用useUnmou

引言

useUnmount,组件卸载时执行的 Hook,比如组件卸载时,需要清除定时器或者相关的监听,就可以使用useUnmount。

🦌来看看效果

可以看到,只有在子组件销毁时时,useUnmount才执行了。

🐿源码实现

const useUnmount = (fn: () => void) => {
  const fnRef = useRef(fn);
  fnRef.current = fn;
  useEffect(() => () => fn?.(), []);
};

🐬完整demo源码

import { useEffect, useRef, useState } from "React";
// 自定义useUnmount hooks
const useUnmount = (fn: () => void) => {
  const fnRef = useRef(fn);
  fnRef.current = fn;
  useEffect(() => () => fn?.(), []);
};
const Child = () => {
  useUnmount(() => {
    console.log("子组件销毁了");
  });
  return <div>我是子组件</div>;
};
const UseUnmountDemo = () => {
  const [showChild, setShowChild] = useState(true);
  return (
    <>
      {showChild && <Child />}
      <button onClick={() => setShowChild(!showChild)}>显示销毁子组件</button>;
    </>
  );
};
export default UseUnmountDemo;

🍓参考

有兴趣的小伙伴可以去看,react-use 和 ahooks 的源码,学习前辈们优雅的代码

以上就是每天一个hooks学习之useUnmount的详细内容,更多关于hooks useUnmount的资料请关注编程网其它相关文章!

--结束END--

本文标题: 每天一个hooks学习之useUnmount

本文链接: https://www.lsjlt.com/news/213165.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 每天一个hooks学习之useUnmount
    目录引言🦌来看看效果🐿源码实现🐬完整demo源码🍓参考引言 useUnmount,组件卸载时执行的 Hook,比如组件卸载时,需要清除定时器或者相关的监听,就可以使用useUnmou...
    99+
    2023-05-19
    hooks useUnmount hooks 学习
  • 每天一个hooks学习之useUpdateEffect
    目录先讲点废话🦌来看看效果🐿源码实现🐬完整demo源码🍓参考先讲点废话 useUpdateEffect 用法等同于 useEffect,但是会忽略首次执...
    99+
    2023-05-19
    hooks useUpdateEffect hooks学习
  • 每天学习一个hooks useMount
    目录🐶先讲点废话🦌来看看效果🐿源码实现🐬完整demo源码useUnmount🐶先讲点废话 useMount,在组件首次渲染时执行。这个hook的用处也很多,比如有个selec ...
    99+
    2023-05-20
    hooks useMount hooks useMount
  • react学习每天一个hooks useWhyDidYouUpdate
    目录先讲点废话来看看效果hooks源码来了demo完整源码先讲点废话 这个hooks我记忆很深,因为当时有一次面试的时候,叫我手写实现这个自定义hooks,哈哈,所以这个系列的第一个...
    99+
    2023-05-18
    react hooks useWhyDidYouUpdate react hooks
  • 每天学一个 Linux 命令之more命令
    more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会...
    99+
    2022-06-04
    命令 Linux
  • 每天学习一个Android中的常用框架——1.Litepal
    文章目录1.简介2.特性3.演示3.1 集成3.2 配置3.3 创建数据库3.4 升级数据库3.5 插入数据3.6 查询数据3.7 更新数据3....
    99+
    2022-06-06
    学习 litepal 框架 Android
  • 每天学习一个Android中的常用框架——5.Retrofit
    文章目录1.简介2.特性3.演示3.1 集成3.2 配置3.3 布局文件和URL封装3.5 GET请求——传统网络参数3.6 GET请求——Re...
    99+
    2022-06-06
    学习 retrofit 框架 Android
  • 每天学习一个Android中的常用框架——4.OkIo
    文章目录1.简介2.特性3.演示3.1 集成3.2 配置3.3 布局文件和URL封装3.4 POST请求提交键值对3.5 POST请求提交字符串...
    99+
    2022-06-06
    学习 框架 Android
  • 每天一个linux命令之locate 命令
    locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。在一般的 distr...
    99+
    2022-06-04
    命令 linux locate
  • 每天学习一个Android中的常用框架——6.ButterKnife &amp; Zelezny
    文章目录1.简介2.特性3.演示3.1 集成3.2 布局文件和资源文件3.3 ButterKnife的主要功能3.3.0 使用准备3.3.1 V...
    99+
    2022-06-06
    学习 butterknife 框架 Android
  • 【每天学习一点新知识】文件包含常用之伪协议
    一、伪协议 file:// — 访问本地文件系统http:// — 访问 HTTP(s) 网址ftp:// — 访问 FTP(s) URLsphp:// — 访问各个输入/输出流(I/O streams)zlib:// — 压缩流data...
    99+
    2023-09-02
    php web安全 网络 Powered by 金山文档
  • 每天一个设计模式之享元模式
    作者按:《每天一个设计模式》旨在初步领会设计模式的精髓,目前采用javascript和python两种语言实现。诚然,每种设计模式都有多种实现方式,但此小册只记录最直截了当的实现方式 :) 个人技术博客-godbmw.com 欢迎来玩! ...
    99+
    2023-01-31
    模式
  • 每天一个设计模式之单例模式
    博主按:《每天一个设计模式》旨在初步领会设计模式的精髓,目前采用javascript(_靠这吃饭_)和python(_纯粹喜欢_)两种语言实现。诚然,每种设计模式都有多种实现方式,但此小册只记录最直截了当的实现方式 :) 网速过慢的朋友...
    99+
    2023-01-31
    模式
  • 每天一个设计模式之组合模式
    作者按:《每天一个设计模式》旨在初步领会设计模式的精髓,目前采用javascript和python两种语言实现。诚然,每种设计模式都有多种实现方式,但此小册只记录最直截了当的实现方式 :) 原文地址是:《每天一个设计模式之组合模式》 欢迎...
    99+
    2023-01-31
    模式 组合
  • 每天一个设计模式之命令模式
    作者按:《每天一个设计模式》旨在初步领会设计模式的精髓,目前采用javascript和python两种语言实现。诚然,每种设计模式都有多种实现方式,但此小册只记录最直截了当的实现方式 :) 原文地址是:《每天一个设计模式之命令模式》 欢迎...
    99+
    2023-01-31
    模式 命令
  • 每天一个设计模式之责任链模式
    作者按:《每天一个设计模式》旨在初步领会设计模式的精髓,目前采用javascript和python两种语言实现。诚然,每种设计模式都有多种实现方式,但此小册只记录最直截了当的实现方式 :) 0. 项目地址 责任链模式·代码 《每天一个设...
    99+
    2023-01-31
    模式 责任
  • 每天一个设计模式之装饰者模式
    作者按:《每天一个设计模式》旨在初步领会设计模式的精髓,目前采用javascript和python两种语言实现。诚然,每种设计模式都有多种实现方式,但此小册只记录最直截了当的实现方式 :) 原文地址是:《每天一个设计模式之装饰者模式》 欢...
    99+
    2023-01-31
    模式
  • 每天一个设计模式之订阅-发布模式
    博主按:《每天一个设计模式》旨在初步领会设计模式的精髓,目前采用javascript(_靠这吃饭_)和python(_纯粹喜欢_)两种语言实现。诚然,每种设计模式都有多种实现方式,但此小册只记录最直截了当的实现方式 :) 0. 项目地址 ...
    99+
    2023-01-31
    模式
  • 一个网工的Linux学习之路
    机缘巧合下,在快要毕业时找到了一份网络工程师的工作,对于学习通信工程的我来说,也不算是跨专业就业吧。在入职之前也了解了一下网络工程师的学习路径,网络工程师是从事计算机信息系统的设计、建设、运行和维护工作,需掌握网络技术的理论知识和操作技能。...
    99+
    2023-06-06
  • elementui源码学习之仿写一个el-divider组件
    目录正文组件需求分析组件中用到的知识点函数式组件函数式组件的两种定义方式解决一像素太粗的问题组件封装组件封装的效果图组件封装的代码正文 本篇文章记录仿写一个el-divider组件细...
    99+
    2022-11-13
    elementui仿写el-divider elementui el-divider
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作