news 2026/6/10 6:52:56

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

作者头像

张小明

前端开发工程师

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/6/10 7:53:36

go 测试框架test

https://geektutu.com/post/quick-go-test.html

作者头像 李华
网站建设 2026/6/10 9:28:47

安全测试在云原生环境的挑战:演进、痛点与破局之道

云原生重塑安全边界云原生技术&#xff08;容器化、微服务、服务网格、不可变基础设施、声明式API&#xff09;的广泛应用&#xff0c;彻底颠覆了传统单体应用的架构模式与部署范式。这种变革在提升敏捷性、弹性与资源利用率的同时&#xff0c;将安全测试推入了前所未有的复杂战…

作者头像 李华
网站建设 2026/6/10 9:24:18

BC911:22V/3.5A 同步降压单节锂电池充电芯片

BC911是一款高集成度同步降压锂电池充电芯片&#xff0c;专为单节锂离子电池设计&#xff0c;输入电压范围4~22V&#xff0c;最大充电电流3.5A&#xff0c;适用于便携式媒体播放器、智能手机、PDA/DSC、手持设备及充电底座等场景。提供ESOP8与DFN10两种封装&#xff0c;工作结温…

作者头像 李华