当前位置: 首页 > wzjs >正文

网站建设基础实训报告网站排名优化查询

网站建设基础实训报告,网站排名优化查询,制作网站的程序语言,猪八戒接单网在日常开发场景中,监听窗口变化是一个比较常见又很重要的业务功能,其实实现起来也很简单,今天就来记录一下具体的实现以及注意事项。 实现思路 在 React 中,可以通过监听 window 的 resize 事件来检测可视区域(viewp…

在日常开发场景中,监听窗口变化是一个比较常见又很重要的业务功能,其实实现起来也很简单,今天就来记录一下具体的实现以及注意事项。

实现思路

在 React 中,可以通过监听 window 的 resize 事件来检测可视区域(viewport)的宽度变化。

其中实现的关键为:

  • window.innerWidth:获取浏览器可视区域的宽度
  • window 的 resize 事件:监听窗口大小的变化,但要注意防抖,避免触发性能问题。虽然 useEffect 只执行两次,但它注册的 resize 事件回调会在每次窗口变化时触发,而这个触发频率可能极高
  • 在组件销毁时正确清理监听器,移除 resize 事件监听,避免内存泄漏。

具体实现

import React, { useEffect, useState } from 'react';export default function ViewportWidthTracker() {const [width, setWidth] = useState(window.innerWidth);useEffect(() => {// 监听窗口大小变化let timeoutId = null;const handleResize = () => {// 每次触发 resize 时清除之前的定时器clearTimeout(timeoutId);// 设置新的定时器,延迟 150ms 执行timeoutId = setTimeout(() => {setSize({ width: window.innerWidth, height: window.innerHeight });}, 150);};window.addEventListener('resize', handleResize);// 清理监听器return () => {window.removeEventListener('resize', handleResize);};}, []); // 空依赖数组确保只在组件挂载和卸载时运行return (<div><h1>当前可视区域宽度: {width}px</h1></div>);
}

注意事项

  1. SSR 环境问题:在服务端渲染(如 Next.js)中,window 对象不存在。可通过条件判断避免错误
useEffect(() => {if (typeof window === 'undefined') return;// 监听逻辑
}, []);
  1. 组件卸载时清理:必须在 componentWillUnmount 或 useEffect 返回的清理函数中移除事件监听,防止内存泄漏。

封装自定义 hook

这个场景比较常见,可以封装为自己的 hook,方便后续调用。

import { useState, useEffect } from 'react';function useWindowSize() {const [size, setSize] = useState({ width: 0, height: 0 });useEffect(() => {// 监听窗口大小变化let timeoutId = null;const updateSize = () => {// 每次触发 resize 时清除之前的定时器clearTimeout(timeoutId);// 设置新的定时器,延迟 150ms 执行timeoutId = setTimeout(() => {setSize({ width: window.innerWidth, height: window.innerHeight });}, 150);};window.addEventListener('resize', updateSize);updateSize();return () => window.removeEventListener('resize', updateSize);}, []);return size;
}// 使用自定义 Hook
function MyComponent() {const size = useWindowSize();return (<div>当前窗口: {size.width} x {size.height}</div>);
}

在这里插入图片描述


文章转载自:

http://FFWudR92.hrjrt.cn
http://aVAOCZzM.hrjrt.cn
http://Rgb20h6U.hrjrt.cn
http://cTrE5GD5.hrjrt.cn
http://NF2hIgQZ.hrjrt.cn
http://OMHeYc47.hrjrt.cn
http://1MwA1mhE.hrjrt.cn
http://tMgU6eAn.hrjrt.cn
http://z7VWpV4T.hrjrt.cn
http://VbLo5l4a.hrjrt.cn
http://wLfL046g.hrjrt.cn
http://yqwj1HtN.hrjrt.cn
http://DBigD4A4.hrjrt.cn
http://TSAouQNe.hrjrt.cn
http://l8tCy5un.hrjrt.cn
http://8Wow2yPn.hrjrt.cn
http://cVEdFeP6.hrjrt.cn
http://U3uGLhv1.hrjrt.cn
http://osmItRjI.hrjrt.cn
http://QD69qvKn.hrjrt.cn
http://tnPEbSzv.hrjrt.cn
http://wK8Nsp7x.hrjrt.cn
http://cc3Gcjsp.hrjrt.cn
http://lph0TDFq.hrjrt.cn
http://GGyRgl3W.hrjrt.cn
http://s9gkz6DZ.hrjrt.cn
http://QipTwGTA.hrjrt.cn
http://qN30S5PJ.hrjrt.cn
http://uF12OIZl.hrjrt.cn
http://7An5O9yU.hrjrt.cn
http://www.dtcms.com/wzjs/745374.html

相关文章:

  • 图片展示型网站五棵松网站建设
  • 用php做商城网站的设计论文网页小游戏无需登录
  • 利川网站建设如何评估网站
  • 关于建设门户网站的请示建设部网站备案
  • 杭州公司建设网站购物网站怎么做项目简介
  • 密云重庆网站建设手机网站开发指南
  • app免费下载网站地址进入1688黄页网女性
  • 建立网站底线深圳网站建设三把火
  • 山西国人伟业网站东莞松山湖中心医院
  • 网站建设相关岗位名称a站下载
  • 做微商网站郑州哪里做网站汉狮
  • 自己能否建设网站网站建设语
  • 眉山网站开发商业网站是什么
  • 网站开发人员岗位要求中国档案网站建设的特点
  • 成都服装网站建设wordpress接入微信订阅号
  • 甘肃省城乡建设厅网站合肥企业网站建
  • 网站建设用户需求调查百度关键词优化软件排名
  • 好站站网站建设推广乐陵森源木业全屋定制
  • 网站建设页面设计网站tag标签
  • 郑州网站制作价格和田做网站的联系电话
  • 义乌市建设局网站小游戏大全网页版
  • 专业网站设计建设服务域名收录
  • 好网站建设公司开发方案哪个网站公司做的
  • 企业网站改版计划书寮步镇网站建设公司
  • 郑州网站建设乚汉狮网络php个人网站怎么做
  • 网站建设中需求分析报告合肥建设官方网站
  • 织梦网站后台使用说明书手机版网站设计风格
  • 手机怎样建网站工信部网站备案用户名
  • 网站地图设计泰安网络推广
  • 许昌网站建设汉狮套餐如何编辑企业网站