点击【历史对话】按钮时会弹出下拉列表,现在需要增加一个功能:点击页面其他区域时隐藏这个下拉列表

E:\source\aa2_agent12\ui\app\courses\[id]\page.tsx文件,点击【历史对话】按钮时会弹出下拉列表,现在需要增加一个功能:点击页面其他区域时隐藏这个下拉列表

修改内容总结

1. page.tsx:3

添加了useRef导入:

import React, { useState, useEffect, useRef } from 'react'

2. page.tsx:247-268

添加了 ref 和 useEffect 监听点击事件:

// Ref for history dropdown const historyDropdownRef = useRef<HTMLDivElement>(null) // 点击页面其他区域时关闭历史对话下拉列表 useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if ( historyDropdownRef.current && !historyDropdownRef.current.contains(event.target as Node) ) { setShowHistoryDropdown(false) } } if (showHistoryDropdown) { document.addEventListener('mousedown', handleClickOutside) } return () => { document.removeEventListener('mousedown', handleClickOutside) } }, [showHistoryDropdown])

3. page.tsx:1374

将 ref 绑定到下拉菜单的容器上:

<div className='relative' ref={historyDropdownRef}>

工作原理

  1. 创建了一个historyDropdownRef引用,绑定到包含按钮和下拉列表的容器上
  2. 使用useEffect监听showHistoryDropdown的变化
  3. 当下拉列表显示时,添加mousedown事件监听器
  4. 点击事件触发时,检查点击的目标是否在下拉容器内
  5. 如果点击的是外部区域,就关闭下拉列表
  6. 组件卸载或下拉列表关闭时,移除事件监听器

现在点击页面其他区域时,历史对话下拉列表会自动关闭!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1124887.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis存储空间复杂度和时间复杂度的平衡

下面是一个案例:根据奖品概率计算奖品存储空间以及时间复杂度的权衡. 1. 内存占用的计算 1.1 不同精度下的内存占用 // 精度范围&#xff08;rateRange&#xff09;决定了数组大小 rateRange 10000 // 万分位 (0.0001) rateRange 100000 // 十万分位 (0.00001) r…

CPU密集型任务与I/O密集型任务详解

目录 CPU密集型任务与I/O密集型任务详解 一、基本概念 CPU密集型任务&#xff08;CPU-bound&#xff09; I/O密集型任务&#xff08;I/O-bound&#xff09; 二、关键区别对比 三、详细特征与应用场景 CPU密集型任务 I/O密集型任务 四、线程池配置建议 CPU密集型任务 …

bss段、data段、text段、heap堆、stack栈的基本概念

1. bss段bss段&#xff08;bss segment&#xff09;通常是指用来存放程序中未初始化的全局变量的一块内存区域。bss是英文Block Started by Symbol的简称。bss段属于静态内存分配。2. data段数据段&#xff08;data segment&#xff09;通常是指用来存放程序中已初始化的全局变…

【SRC 挖洞赚钱实测】单高危漏洞 2W+!低中高危赏金拆解,挖漏洞平均日收入算给你看

一个漏洞奖励2w&#xff0c;这是真实的嘛&#xff01; 我入行网安这些年也一直在接私活&#xff0c;副业赚的钱几乎是我工资的三倍&#xff01;看到最近副业挖漏洞的内容非常火爆&#xff0c;我便决定将自己的经验分享出来&#xff0c;带我的粉丝们一起挣钱&#xff01; 注意…

破防了!Java 卷到月薪 8K,转网安直接年薪 40 万 +,2025 自救路线图全公开!

从卷Java到冲网安&#xff1a;计算机人2025自救路线图&#xff08;附安全岗年薪40-150万&#xff09; 只要你敢学我就敢教&#xff01;500集黑客入狱教程&#xff0c;从入门到入狱&#xff01;全程干货无废话&#xff0c;学不会我退网&#xff01; 计算机专业未来发展全景图&…

抗干扰更强!8路PWM输出模块:隔离RS485/CAN通讯+占空比精准调节

8路PWM脉冲输出模块&#xff0c;是一种集成化的工业控制/电子接口模块&#xff0c;其核心功能是同时提供8组独立或可同步的、可编程的PWM(脉冲宽度调制)脉冲信号输出。通过内置的控制核心、定时单元和功率驱动电路&#xff0c;将外部控制器(PLC、工控机、单片机、云平台)的指令…

多元场景通吃的秘密!8路PWM输出模块——集中控制+独立调节,双重模式更灵活

8路PWM脉冲输出模块的核心价值在于多通道独立/同步的占空比、频率可调控制&#xff0c;能同时驱动8路执行器实现调速、调光、调压、调力等精准控制。结合工业自动化、物联网、智能装备等领域的实际需求&#xff0c;其典型应用场景可分为以下8大类&#xff0c;覆盖从工业核心设备…

副业封神!挖 SRC 漏洞一个就赚 2W+,网安人轻松躺赚,平均日收入看完馋哭了!

一个漏洞奖励2w&#xff0c;这是真实的嘛&#xff01; 我入行网安这些年也一直在接私活&#xff0c;副业赚的钱几乎是我工资的三倍&#xff01;看到最近副业挖漏洞的内容非常火爆&#xff0c;我便决定将自己的经验分享出来&#xff0c;带我的粉丝们一起挣钱&#xff01; 注意…

2026年六大GEO优化公司能力测评:技术纵深决定AI搜索霸权

2026年&#xff0c;生成式AI已占据用户决策链的核心节点。QuestMobile数据显示&#xff0c;中国AI搜索用户规模突破4.2亿&#xff0c;用户日均通过DeepSeek、文心一言、Kimi等平台发起超过2.8亿次商业类提问。当"新能源车怎么选""智能家居品牌推荐"这类问题…

在Windows上编译、安装Rust

你想知道在Windows系统上安装Rust编程语言的具体方法&#xff0c;我会为你提供官方推荐、新手友好的完整步骤&#xff0c;包括前置依赖、安装操作和验证方法&#xff0c;确保你能顺利完成安装。 一、前置准备&#xff08;关键&#xff01;避免后续编译报错&#xff09; Rust在W…

救命!失业党狂喜!零成本学网安 3 个月,避开万元培训班,月薪 12K 成功逆袭!

失业 3 个月投了 127 份简历&#xff1f;别卷了&#xff01;我靠网安转行月薪 12K&#xff0c;附 3 个月零成本入门攻略 去年被裁那天&#xff0c;我盯着招聘软件上 “35 岁以下优先” 的字样&#xff0c;把简历里的 “5 年行政经验” 改了又改&#xff0c;结果投出去的 127 份…

艾莉丝努力练剑的256天创作纪念日:在代码星河中逐梦前行

&#x1f525;艾莉丝努力练剑&#xff1a;个人主页 ❄专栏传送门&#xff1a;《C语言》、《数据结构与算法》、C/C干货分享&学习过程记录、Linux操作系统编程详解、笔试/面试常见算法&#xff1a;从基础到进阶、测试开发要点全知道 ⭐️为天地立心&#xff0c;为生民立命…

pycocotools绘制标注结果(bbox,segment,pose)

博主提供docker开发镜像(主要面向深度学习、计算机视觉和机器人开发等需要 GPU 支持的场景)用于测试所有博客用例代码&#xff0c;下载地址(ubuntu24_cux_dev)[https://wilson.blog.csdn.net/article/details/156309082] 以下是一个基于 pycocotools 开发的 Python 函数&#x…

深度测评9个AI论文工具,助本科生轻松搞定毕业论文!

深度测评9个AI论文工具&#xff0c;助本科生轻松搞定毕业论文&#xff01; AI 工具如何改变论文写作的未来 随着人工智能技术的飞速发展&#xff0c;越来越多的本科生开始借助 AI 工具来辅助完成毕业论文。这些工具不仅能够帮助学生高效地完成内容生成、结构搭建&#xff0c;还…

2025 Java 转网安必看:从技能迁移到岗位选择,附 40-150 万安全岗薪资拆解!

从卷Java到冲网安&#xff1a;计算机人2025自救路线图&#xff08;附安全岗年薪40-150万&#xff09; 只要你敢学我就敢教&#xff01;500集黑客入狱教程&#xff0c;从入门到入狱&#xff01;全程干货无废话&#xff0c;学不会我退网&#xff01; 计算机专业未来发展全景图&…

从0到1讲解什么是JVM:Java程序员必须掌握的核心知识(附Spring Boot实战案例)

视频看了几百小时还迷糊&#xff1f;关注我&#xff0c;几分钟让你秒懂&#xff01;一、什么是JVM&#xff1f;小白也能听懂的解释JVM&#xff08;Java Virtual Machine&#xff09;&#xff0c;中文叫 Java虚拟机&#xff0c;是运行Java程序的“发动机”。 你写的 .java 文件&…

满足成本与性能双重要求:AWS中为访问私有子网EC2的Lambda实施优化方案

一家公司使用 Amazon EC2 实例和 AWS Lambda 函数来运行其应用程序。该公司在其 AWS 账户中拥有包含公共子网和私有子网的 VPC。EC2 实例在其中一个 VPC 的私有子网中运行。Lambda 函数需要直接网络访问 EC2 实例以使应用程序工作。 该应用程序将运行至少 1 年。公司预计在此期…

网安小白狂喜!Web 安全入门指南:OWASP Top 10 + 漏洞实战,收藏这篇就够了!

Web 安全入门&#xff1a;从 OWASP Top 10 到常见漏洞 解构 Web 安全威胁图谱&#xff1a;从 OWASP Top 10 到典型攻击&#xff0c;筑牢数字防线 在 Web 应用成为业务核心载体的今天&#xff0c;安全漏洞已成为威胁数据隐私、业务稳定的 “隐形炸弹”。从 OWASP Top 10 划定的…

Spring循环依赖:原理、限制与解决方案深度解析

一、循环依赖的定义与本质在Spring框架中&#xff0c;循环依赖指的是两个或多个Bean之间存在直接或间接的相互引用关系&#xff0c;从而形成一个闭合的依赖环。简而言之&#xff0c;当BeanA依赖BeanB&#xff0c;同时BeanB也依赖BeanA时&#xff0c;便构成了典型的循环依赖。代…

并发编程中的CAS机制:原理、实现与应用剖析

在并发编程领域&#xff0c;确保线程安全通常首先会联想到加锁机制&#xff0c;如synchronized或ReentrantLock。虽然加锁是直观且广泛采用的方案&#xff0c;但在高并发场景下&#xff0c;锁带来的性能开销——如上下文切换、内核态切换及线程阻塞——可能成为系统瓶颈。为此&…