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

自建网站做外贸好做吗网页游戏开服表怎么删

自建网站做外贸好做吗,网页游戏开服表怎么删,重庆市建设工程信息,wordpress默认ssl在 React 中操作 DOM 元素时,使用 document.querySelector 以及全局事件监听(如 addEventListener)并不推荐,因为这些方法无法与 React 的生命周期很好地协调,可能会导致内存泄漏或影响性能。 可以改为使用 useRef 和…

在 React 中操作 DOM 元素时,使用 document.querySelector 以及全局事件监听(如 addEventListener)并不推荐,因为这些方法无法与 React 的生命周期很好地协调,可能会导致内存泄漏或影响性能。

可以改为使用 useRefuseEffect 来处理 DOM 元素以及事件监听。

React 代码:

import React, { useRef, useEffect, useState } from 'react';
import styles from './index.module.less';const ComponentName = () => {const containerRef = useRef(null);const leftPanelRef = useRef(null);const rightPanelRef = useRef(null);const dividerRef = useRef(null);const [isDragging, setIsDragging] = useState(false);useEffect(() => {const handleMouseDown = () => {setIsDragging(true);};const handleMouseMove = (e) => {if (!isDragging) return;const containerRect = containerRef.current.getBoundingClientRect();const offsetX = e.clientX - containerRect.left;const leftWidth = (offsetX / containerRect.width) * 100;const rightWidth = 100 - leftWidth;leftPanelRef.current.style.width = `${leftWidth}%`;rightPanelRef.current.style.width = `${rightWidth}%`;};const handleMouseUp = () => {setIsDragging(false);};const divider = dividerRef.current;divider.addEventListener('mousedown', handleMouseDown);document.addEventListener('mousemove', handleMouseMove);document.addEventListener('mouseup', handleMouseUp);// 清理事件监听器return () => {divider.removeEventListener('mousedown', handleMouseDown);document.removeEventListener('mousemove', handleMouseMove);document.removeEventListener('mouseup', handleMouseUp);};}, [isDragging]);return (<div className={styles.container} ref={containerRef}><div className={styles.leftPanel} ref={leftPanelRef}></div><div className={styles.divider} ref={dividerRef}></div><div className={styles.rightPanel} ref={rightPanelRef}></div></div>);
};export default ComponentName;

样式css:

.container {display: flex;width: 100%;height: 100vh; position: relative;
}.leftPanel {width: 50%;background-color: lightblue;
}.rightPanel {width: 50%;background-color: lightgreen;
}.divider {width: 5px;background-color: gray;cursor: ew-resize; position: relative;
}

注释:

  1. useRef:用来获取 DOM 元素引用,如 containerRefleftPanelRefrightPanelRefdividerRef
  2. useState:用来存储拖动的状态 isDragging
  3. useEffect:用于在组件挂载时添加事件监听器,并在组件卸载时清理这些监听器。这样可以避免内存泄漏或重复监听。
  4. 清理事件:确保在组件卸载时移除 mousemovemouseup 的事件监听,避免意外行为。
  5. getBoundingClientRect() 是 JavaScript 中用于获取元素的边界信息的方法。它返回一个 DOMRect 对象,包含该元素相对于视口的位置和大小信息,包括 top, right, bottom, left, width, 和 height 等属性。
http://www.yayakq.cn/news/606633/

相关文章:

  • 安仁网站制作门户网站建设运行环境要求
  • 可以去非菲律宾做游戏网站吗门户网站如何建设
  • 没有建设的网站不能申请微信支付吗wordpress 内存
  • 上海城乡住房建设厅网站网络营销平台的主要功能
  • c 做精品课程网站跨境电商平台企业
  • 1000学习做网站贵吗南京高端网站建设工作室
  • 自己怎样建立网站给自己家的公司做网站好做吗
  • 网站做多久才有流量品牌seo主要做什么
  • 加快门户网站建设大连公共资源交易平台
  • 如何申请一个免费的网站空间个人网站能做淘宝客吗
  • 怎么建立公司网站苏州网站开发公司招聘信息
  • 公司网站如何维护wordpress注册页面更改
  • 网站模板怎样使用成都网站制作报价
  • 建c2c网站室内装修设计联盟
  • 长沙专业网站建设服务网站建设与管理 规划书
  • 网站建设的具体步骤南海建设网站
  • 如何查看一个网站做的外链抢车票网站怎么做
  • 网站动态小图标郑佩佩 最新消息
  • 怎么做拍卖网站吗企业网站建设公司地址
  • 嘉兴做营销型网站wordpress块引用
  • 佛山住房和城乡建设部网站虚拟币交易网站源码
  • 网站建设框架注意事项网站建设项目网络图
  • 网站建设利益分析WordPress网络管理功能
  • php大型综合网站源码网站开发在线学习
  • 广州番禺营销型网站昌平区事业单位公共知识培训网站
  • 化妆品网站设计欣赏做网站的优化价格
  • 聊城建设局网站三大框架网站开发
  • 建设银行人力资源系统网站首页百度主动提交工具 wordpress
  • php网站的html文件放在那个里面的企业产品网站源码
  • 上海专业网站建做网站有好创意想法