Skip to content

react 中怎么实现下拉菜单场景,要求点击区域外能关闭下拉组件

Posted on:2024年8月15日 at 09:26

涉及以下几个步骤:

  1. 创建下拉菜单组件
  2. 监听点击事件
  3. 判断点击事件是否在下拉菜单外部

步骤说明

1. 创建下拉菜单组件

import React, { useState, useRef, useEffect } from "react";

const Dropdown = () => {
  const [isOpen, setIsOpen] = useState(false);
  const dropdownRef = useRef(null);

  const toggleDropdown = () => {
    setIsOpen(!isOpen);
  };

  // 监听点击事件
  useEffect(() => {
    const handleClickOutside = (event) => {
      if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
        setIsOpen(false);
      }
    };

    document.addEventListener("mousedown", handleClickOutside);
    return () => {
      document.removeEventListener("mousedown", handleClickOutside);
    };
  }, []);

  return (
    <div ref={dropdownRef}>
      <button onClick={toggleDropdown}>Toggle Dropdown</button>
      {isOpen && (
        <div className="dropdown-menu">
          <p>Menu Item 1</p>
          <p>Menu Item 2</p>
          <p>Menu Item 3</p>
        </div>
      )}
    </div>
  );
};

export default Dropdown;

2. 监听点击事件

3. 判断点击事件是否在下拉菜单外部

注意事项

通过上述步骤,你可以实现点击区域外关闭下拉菜单的功能。

原文转自:https://fe.ecool.fun/topic/6576edd9-ceb6-4871-8e33-008fdad7ef80