Effect Hook

2023-11-01

 

1 数据获取,设置订阅以及手动更改 React 组件中的 DOM 都属于副作用。

2 可以把 useEffect Hook 看做 componentDidMountcomponentDidUpdate 和 componentWillUnmount 这三个函数的组合。

3 useEffect函数第二个参数是可选的:

  如果不传,则每次渲染都执行副作用;

  如果传入数组,则数组的成员变化了(比较引用地址),才执行副作用。

 

一 不需要清除的副作用

 

 

import React, { useState, useEffect } from "react";

// 记录渲染次数
let times = 0;

export default function App(props) {
  console.log(`第${++times}次渲染`);

  const [counter, setCounter] = useState(0);

  useEffect(() => {
    document.title = `第${counter}次点击`;
  });

  return (
    <div>
      <button onClick={e => setCounter(counter + 1)}>按钮</button>
    </div>
  );
}

 

 

二 需要清除的副作用

 

import React, { useState, useEffect } from "react";

export default function App(props) {
  const [size, setSize] = useState({
    width: window.innerWidth,
    height: window.innerHeight
  });

  useEffect(() => {
    window.addEventListener("resize", onResize, false);
    return () => {
      window.removeEventListener("resize", onResize, false);
    };
  }, []);

  const onResize = e => {
    setSize({
      width: window.innerWidth,
      height: window.innerHeight
    });
  };

  return (
    <div>
      窗口尺寸:{size.width}*{size.height}
    </div>
  );
}

 

转载于:https://www.cnblogs.com/sea-breeze/p/11068326.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Effect Hook 的相关文章

随机推荐

  • 把token放入请求头

    1 jq 2 vue js 转载于 https www cnblogs com xiaobiaomei p 10917331 html
  • Python篇----Requests获取网页源码(爬虫基础)

    1 下载与安装 见其他教程 2 Requsts简介 Requests is an Apache2 Licensed HTTP library written inPython for human beings Python s standa
  • SQLServer查看各个表大小

    SQLServer查看各个表大小 SQLServer查看各个表大小 declare id int declare type character 2 declare pages int declare dbname sysname decla
  • Day83-面试前,先自己模拟下这 10 个问题

    不管是应届生还是社招生 相信你都经历过面试的摧残 面对咄咄逼人的面试官 面对随处可见的问题陷阱 我们应该如何面对 看完这边文章 相信你一定会有收获 Q1 请你先自我介绍下 回答技巧 回答尽量简短 控制在1 2分钟内 先简单的介绍一下自己 说
  • OAuth使用教程(一):初识OAuth

    一 OAuth介绍 OAuth 开放授权 是一个开放标准 允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息 而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容 OAuth允许用户提供一个令牌给第三方网站 一个
  • mmdetection3d 源码学习 mvxnet(多模态融合)

    mmdetection3d 源码学习 mvxnet 多模态融合 配置文件 dv mvx fpn second secfpn adamw 2x8 80e kitti 3d 3class py 模型 model settings voxel s
  • 餐饮便利店服装店线下零售场景都有刷脸支付需求

    此前 支付宝已经开始打通江浙沪数个城市之间的二维码乘车 前几天也在北欧促成了两大移动支付APP的互通 如今刷脸支付还未普及 但是刷脸支付的前景可谓一片大好 未来包括超市 便利店 药房 服装店等等的众多线下零售场景都会有刷脸支付的需求 常见蜻
  • MySQL之Innodb锁机制:Next-Key Lock 浅谈

    阅读 InnoDB存储引擎 第六章涉及锁的三种算法 整理结合转载文档 https www cnblogs com zhoujinyi p 3435982 html 数据库使用锁是为了支持更好的并发 提供数据的完整性和一致性 InnoDB是一
  • 6个步骤,告诉你如何用树莓派和机器学习DIY一个车牌识别器!(附详细分析)...

    作者 Robert Lucian Chiriac 翻译 天道酬勤 编辑 Carol 出品 AI科技大本营 ID rgznai100 几个月前 作者开始考虑让汽车能够具备检测和识别物体的能力 他很喜欢这个主意 因为已经见识到了特斯拉的能力 并
  • (渗透学习)理解java反序列化漏洞原理---层序渐进

    没真正学过java 对很多概念理解的不清晰 所以下面所有都是参考资料结合我自己的理解 可能存在错误 1 为什么要序列化 因为只有字节数据才能进行存储和传输 所以为了使对象 如class类 能够存储 传输 就需要将对象转成字节的形式 存储 把
  • tomcat显示启动成功,访问不了

    问题阐述 解压tomcat成功之后 发现访问不了 问题分析 1 开通了防火墙 但是没有放开8080端口号 查看防火墙状态 firewall cmd state 显示running表示防火墙是开启状态 执行放开8080端口的命令 firewa
  • 三个月后,快手To B怎么样了?

    未来 如何独立作战和走出快手的TOC 客户资源圈 或将成为快手TOB新的十字路口 作者 斗斗 编辑 皮爷 出品 产业家 人口红利终结 流量红利终结 超常规的高速增长终结 TOC模式的路越来越难走了 快手与抖音作为短视频行业 的两大巨头 主要
  • Linux下的TCP通信

    Linux下的TCP通信 今天我们介绍如何编写Linux下的TCP程序 关于UDP程序可以参考这里 http blog csdn net htttw article details 7519971 本文绝大部分是参考 Linux程序设计 第
  • Java算法给定一个整数数组,找出其中两个数相加等于目标值

    给定一个整数数组 找出其中两个数相加等于目标值 例如 给定数组及目标值 nums 2 7 11 15 target 9 因为nums 0 nums 1 2 7 9 返回 0 1 使用辅助空间 使用哈希表 时间复杂度是O n 空间复杂度 O
  • 半监督目标检测yolo+FixMatch

    目前实验发票印章检测 只需1张训练集即可达到0 921 mAP 5 如果用31张训练集可达到0 952 mAP 5 无标签数据均使用600张 待填坑 敬请期待
  • tkinter窗口切换

    方法1 按钮 Frame 步骤 1 1创建主桌面 import tkinter as tk root tk Tk 1 2 创建不同的Frame 相当于不同的桌布 分别用来创建不同的窗口 face1 tk Frame root face2 t
  • Java面试官最爱问的volatile关键字

    在Java的面试当中 面试官最爱问的就是volatile关键字相关的问题 经过多次面试之后 你是否思考过 为什么他们那么爱问volatile关键字相关的问题 而对于你 如果作为面试官 是否也会考虑采用volatile关键字作为切入点呢 为什
  • 如何建立chrony服务器

    Chrony由两个程序组成 分别是chronyd和chronyc chronyd是一个后台运行的守护进程 用于调整内核中运行的系统时钟和时钟服务器同步 它确定计算机增减时间的比率 并对此进行补偿 chronyc提供了一个用户界面 用于监控性
  • 生成 Linux 运行时间报告的 Bash 脚本

    出于一些原因 你可能需要每月收集一次 Linux 系统运行时间报告 Magesh Maruthamuthu 出于一些原因 你可能需要每月收集一次 Linux 系统运行时间报告 如果是这样 你可以根据需要使用以下 bash 脚本 之一 我们为
  • Effect Hook

    1 数据获取 设置订阅以及手动更改 React 组件中的 DOM 都属于副作用 2 可以把 useEffect Hook 看做 componentDidMount componentDidUpdate 和 componentWillUnmo