news 2026/4/3 7:41:44

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

作者头像

张小明

前端开发工程师

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

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. 组件卸载或下拉列表关闭时,移除事件监听器

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/3 3:09:38

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

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

作者头像 李华
网站建设 2026/3/24 8:19:00

队列集详解

队列集&#xff08;Queue Set&#xff09;是FreeRTOS中用于统一管理多个队列和信号量的关键数据结构&#xff0c;它允许任务通过单一API调用同时监听多个通信对象&#xff0c;显著提升多源数据处理效率和系统实时性。一、队列集的核心概念1. 基本定义队列集是FreeRTOS特有的数据…

作者头像 李华
网站建设 2026/3/26 23:56:20

STM32F103步进电机S曲线加减速定位算法详解

stm32f103步进S曲线加减速定位算法在嵌入式开发中&#xff0c;步进电机的控制是一个常见的需求&#xff0c;尤其是在需要精确定位的场合。今天我们来聊聊如何在STM32F103上实现步进电机的S曲线加减速定位算法。这个算法不仅能让我们更平滑地控制电机&#xff0c;还能减少机械冲…

作者头像 李华
网站建设 2026/3/31 4:36:26

程序员2026年金三银四面试突击之Java权威指南-面试场景题!

Java面试场景题权威指南&#xff08;2026年面试突击版&#xff09;在2026年的“金三银四”招聘旺季&#xff0c;Java面试是程序员求职的关键环节。面试场景题通常考察实际问题的解决能力&#xff0c;包括多线程、集合框架、JVM、设计模式和算法等核心领域。本指南将逐步帮助你突…

作者头像 李华
网站建设 2026/3/29 5:53:36

4D通用世界模型!中科院NeoVerse用百万单目视频直接构建

中国科学院自动化研究所与CreateAI团队&#xff0c;利用海量互联网单目视频构建了一个4D世界模型NeoVerse。构建即时响应、物理一致的4D世界模型&#xff0c;长期以来面临着数据匮乏与训练低效的双重诅咒。传统的解决方案要么受困于昂贵稀缺的多视角数据&#xff0c;限制了模型…

作者头像 李华
网站建设 2026/4/1 16:51:54

英伟达、英特尔和AMD芯片同台竞技:CES 2026各自都展示了怎样的实力

全球最大消费电子展CES 2026上&#xff0c;英伟达、英特尔和AMD新品发布&#xff0c;体现了全球计算产业的历史性转折&#xff0c;AI算力的芯片竞争已经演变为平台架构的全面战争。英伟达重构计算定义的极端协同黄仁勋在CES 2026上带来的是基于全新计算哲学的Rubin计算平台。游…

作者头像 李华