【问题标题】:Hide div when clicked outside the child div in ReactJs在 ReactJs 中单击子 div 外部时隐藏 div
【发布时间】:2022-01-05 06:44:51
【问题描述】:

我想在子 div 外部单击时隐藏子 div。在这种情况下,切换按钮也应该可以工作。

import React, { useState } from "react";

export default function Toggle() {
  const [view, setView] = useState(false);
  return (
    <div style={{ height: "100vh", backgroundColor: "lightblue" }}>
     
      <button onClick={() => setView(!view)}> show/hide </button>
    
      <div 
        style={{
          display: `${view ? "block" : "none"}`,
          height: "20vh",
          width: "10vw",
          backgroundColor: "lightcoral",
        }}
      >
        Child Div
      </div>
      </div>
  );
}

【问题讨论】:

标签: javascript reactjs toggle show-hide


【解决方案1】:

这样做的一种方法是获取单击鼠标光标的坐标 (使用事件),然后将条件语句添加到setView false 仅当光标在子 div 之外且 view 为 true 时。

export default function Toggle() {

const [view, setView] = useState(false);

  function hide(e) {
    if (e.pageX > 80 || e.pageY > 125) {
      if (view) setView(false);
    }
  }

  return (
    <div
      onClick={() => hide(event)}
      style={{ height: "100vh", backgroundColor: "lightblue" }}
    >
      <button onClick={() => setView(!view)}> show/hide </button>

      <div
        style={{
          display: `${view ? "block" : "none"}`,
          height: "20vh",
          width: "10vw",
          backgroundColor: "lightcoral"
        }}
      >
        Child Div
      </div>
    </div>
  );
}

【讨论】:

  • 那太好了,记得投票并检查答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
  • 2012-07-17
  • 2018-12-26
  • 1970-01-01
  • 1970-01-01
  • 2013-04-18
相关资源
最近更新 更多