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

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

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.jsqmd.com/news/211448/

相关文章:

  • redis存储空间复杂度和时间复杂度的平衡
  • CPU密集型任务与I/O密集型任务详解
  • bss段、data段、text段、heap堆、stack栈的基本概念
  • 【SRC 挖洞赚钱实测】单高危漏洞 2W+!低中高危赏金拆解,挖漏洞平均日收入算给你看
  • 破防了!Java 卷到月薪 8K,转网安直接年薪 40 万 +,2025 自救路线图全公开!
  • 抗干扰更强!8路PWM输出模块:隔离RS485/CAN通讯+占空比精准调节
  • 多元场景通吃的秘密!8路PWM输出模块——集中控制+独立调节,双重模式更灵活
  • 副业封神!挖 SRC 漏洞一个就赚 2W+,网安人轻松躺赚,平均日收入看完馋哭了!
  • 2026年六大GEO优化公司能力测评:技术纵深决定AI搜索霸权
  • 在Windows上编译、安装Rust
  • 救命!失业党狂喜!零成本学网安 3 个月,避开万元培训班,月薪 12K 成功逆袭!
  • 艾莉丝努力练剑的256天创作纪念日:在代码星河中逐梦前行
  • pycocotools绘制标注结果(bbox,segment,pose)
  • 深度测评9个AI论文工具,助本科生轻松搞定毕业论文!
  • 2025 Java 转网安必看:从技能迁移到岗位选择,附 40-150 万安全岗薪资拆解!
  • 从0到1讲解什么是JVM:Java程序员必须掌握的核心知识(附Spring Boot实战案例)
  • 满足成本与性能双重要求:AWS中为访问私有子网EC2的Lambda实施优化方案
  • 网安小白狂喜!Web 安全入门指南:OWASP Top 10 + 漏洞实战,收藏这篇就够了!
  • Spring循环依赖:原理、限制与解决方案深度解析
  • 想做项目经理之前,这几件事你最好先想清楚
  • 并发编程中的CAS机制:原理、实现与应用剖析
  • 挖到宝了!专本科网安自学指南:不看学历,少走 2 年弯路,评论区蹲资料的来!
  • 进程的创建——如何理解fork()系统调用
  • 互斥信号量详解
  • 进程的创建——彻底搞懂fork()的好兄弟 execve()
  • 视频太大发不出去?教你3招“无损”压缩,内存省一半,画质不打折!
  • 别只盯着To C了!李开复最新预言:AI Agent的终极战场在To B,搞错方向就完了!
  • 别再挨个翻了!今日 arXiv 精选:多模态大模型+图像生成篇,一张海报看懂未来!
  • 更新:2025年5月-企业互联网数据中心相关数据
  • 漏洞扫描工具深度对比:Burp Suite vs. ZAP