在 React 中单击组件外部时更改状态

2023-12-29

I have a dropdown as is shown in the following image: enter image description here

当我单击文件夹图标时,它会打开和关闭,因为showingProjectSelector属性处于设置为 false 的状态。

  constructor (props) {
    super(props)
    const { organization, owner, ownerAvatar } = props
    this.state = {
      owner,
      ownerAvatar,
      showingProjectSelector: false
    }
  }

当我单击该图标时,它会正确打开和关闭。

<i
  onClick={() => this.setState({ showingProjectSelector: !this.state.showingProjectSelector })}
  className='fa fa-folder-open'>
</i>

但我想做的是当我点击下拉菜单外部时关闭下拉菜单。我怎样才能在不使用任何库的情况下做到这一点?

这是整个组件:https://jsbin.com/cunakejufa/edit?js,输出 https://jsbin.com/cunakejufa/edit?js,output


你可以尝试利用onBlur:

<i onClick={...} onBlur={() => this.setState({showingProjectSelector: false})}/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 React 中单击组件外部时更改状态 的相关文章

  • pubnub 和 head.js

    有没有人成功整合过pubnub http www pubnub com 和 head js 正确吗 Pubnub http www pubnub com 希望我将他们的脚本放在页面底部并带有 div 就在它前面的标签 这可以确保在最后调用
  • 在 Javascript 中获取第一个数字出现后的子字符串

    我正在尝试提取第一个数字之后 并包括 的字符 ABC 123SD gt 123SD 123 gt 123 123SD gt 123SD ABC gt 我当前的解决方案如下 var string1 ABC 123SD var firstDig
  • 限制可选 DOM 复选框

    我试图限制用户可以选择的复选框数量 这些复选框是为数组中的每个项目生成的 DOM 输入对象 我目前对此没有运气 因此非常感谢任何帮助 谢谢 在这里小提琴 http jsfiddle net vVxM2 222 http jsfiddle n
  • 了解 sort() 比较函数

    我正在使用一个电子商务平台 该平台无法重新排序产品属性字段的选项 这真的很糟糕 因为要插入新选项 您几乎必须删除所有现有选项并重新开始 我正在尝试在客户端进行操作 这是我正在处理的内容 这是针对鞋码的 9 EE 9 1 2 EE 10 EE
  • Web 组件 - 服务/非 html 组件

    所以我来自 Angular 想看看如何创建vanilla Web components 现在 从 Angular 开始 我们倾向于将事物分开 组件 充当 HTML CSS 和一些 javascript 然后是 服务 主要负责收集数据和执行不
  • 为什么 length 是 `Array` 的属性而不是 `Array.prototype` 链

    所以我在 V8 控制台上玩了很多 我做到了 Object getOwnPropertyNames 我期望得到 结果 然而 length 所以这意味着不是成为原型链的一部分 length是所有人的成员财产Array对象 这是一个错误 还是有任
  • 将文本大小调整为矩形 在 Canvas HTML5 中调整大小

    我是 Canvas 新手 我正在创建一个网站 以在调整矩形大小时增加文本 我尝试了很多 但没有任何效果 实际上 我希望如果我仅按其宽度调整矩形大小 向左拉伸 向右拉伸 则仅应增加文本宽度而不是字体大小 我已经完成了字体大小 但发现增加孤立文
  • 使用文件 API 将资源加载到 Three.js 中

    我想创建导入 3D 模型以在浏览器中查看的功能 方法是使用File API http www html5rocks com en tutorials file dndfiles Three js 加载器在我托管的文件上运行良好 我的理解是加
  • 通过JS Laravel访问存储目录

    有没有办法访问storage目录 该目录已经链接到publicJS 中的目录 我正在尝试制作一个上传图片的表单 验证脚本 if request gt hasFile photos marker gt photos request gt ph
  • 判断一个数字是否能被 3 或 5 整除 (FizzBu​​zz)

    如何根据输出是否能被 3 或 5 整除来更改输出 如果它能被 3 整除 我想显示 rock 如果它能被 5 整除 我想显示 star 类似于 FizzBu zz 如果两者都有 他们都会看到 这是我的代码 if var n Math floo
  • 如何从 JSON 响应重定向?

    所以我尝试使用 Flask 和 Javascript 上传器 Dropzone 上传文件并在上传完成后重定向 文件上传正常 但在烧瓶中使用传统的重定向 return redirect http somesite com 不执行任何操作 页面
  • jQM / jquery-collagePlus 使用问题

    我正在使用 jQM 构建应用程序 并且尝试使用 jquery collagePlus http ed lea github io jquery collagePlus http ed lea github io jquery collage
  • 在管道中重用变量的功能方式

    在 javascript 和 typescript 中与 Ramda 一起使用函数式编程 我经常发现自己编写如下代码 const myFun c gt const myId c id const value pipe getAnotherO
  • 在 Fabric.js 中按宽度/高度在另一个画布对象内居中和缩放画布对象

    Goal 将一个对象 水平和垂直 置于另一个对象 矩形或组 的中心canvas via Fabric js或者通过Javascript保持原始对象的长宽比相同 但也不超过父对象的宽度 高度比例 父对象 矩形或组 不会居中于canvas元素
  • 如何使用 vanilla JS 实现可维护的反应式 UI

    今天我遇到了一个问题 可以通过使用像 Vue 这样的反应式和状态管理框架来轻松解决 遗憾的是 无法使用它 以下 简化 情况 链接到代码笔 https codepen io theiaz pen BazErKV 我们有一个服务器渲染的页面 其
  • 如何处理requireJs超时错误?

    我正在使用 require js 作为加载框架编写一个移动混合应用程序 我遇到加载错误的问题 我想做的是在设备离线且无法下载在屏幕上显示地图所需的 google 地图 API 脚本时设置后备解决方案 我得到的只是 Uncaught Erro
  • React 应用程序中未调用 Microsoft Graph Toolkit 组件的事件处理程序

    我正在尝试在我的 React 应用程序中使用 Microsoft Graph Toolkit 中的登录组件 它工作得很好 但我似乎无法让任何事件发生 例如 import React from react import MgtLogin Pr
  • Node.js - 重载函数

    有没有一种方法可以重载node js中的函数 类似于 noSuchMethod https developer mozilla org en JavaScript Reference Global Objects Object noSuch
  • Node npm 包抛出使用严格:全局发布和安装后未找到命令

    我正在尝试发布 npm 包 当我全局安装该包并尝试运行 cli 命令时 我收到此错误 nvm versions node v0 12 2 bin myPack line 1 use strict command not found nvm
  • 如何使用 jQuery 或 JavaScript 聚焦 或 标签?

    for var i 0 i

随机推荐

  • 当列名以数字开头时,Pandas 查询会抛出错误

    我正在尝试对以下数据框执行查询 data ab 1 2 3 c1 1 2 3 d 1 2 3 e f 1 2 3 df pd DataFrame data for cl in df columns print len df query s
  • PowerShell 使用 Start-Process 在脚本块中执行函数会用双引号做奇怪的事情

    我有一个编辑注册表的 PowerShell 脚本 因此需要以管理员身份运行 为此 我从正在运行的 PowerShell 脚本启动一个新的 PowerShell 进程 并使用其中包含函数的脚本块传递部分注册表项路径 当我在该函数中使用双引号时
  • ID3v2规范

    基于http id3 org id3v2 3 0 http id3 org id3v2 3 0规范中 帧头的布局是 Frame ID xx xx xx xx four characters Size xx xx xx xx Flags xx
  • 如何使用 JSP/Servlet 和 Ajax 将文件上传到服务器?

    我正在创建一个 JSP Servlet Web 应用程序 并且想通过 Ajax 将文件上传到 servlet 我该怎么做呢 我正在使用 jQuery 到目前为止我已经做了
  • 从多处理计算更新 TKinter GUI

    我正在创建一个GUI对于 python 模拟器 这GUI提供设置模拟并运行模拟的工具 当模拟运行时 我想将进度信息传递给GUI并将其显示在Label in my simulation frame 因为模拟需要使用多处理来运行 所以我使用Qu
  • url中的#/是什么意思?

    我正在开发 ROR Web 应用程序 我的网页网址如下所示 http dev ibiza jp 3000 facebook report advertiser id 2102 dashboard 这里我明白advertiser id是210
  • 仍然对协变和逆变以及输入/输出感到困惑

    好的 我在 stackoverflow 上读了一些关于这个主题的内容 观看了this http msdn microsoft com en us vcsharp ee672319 aspx this http channel9 msdn c
  • 托管 C++ 与非托管/本机 C++ 的性能

    我正在编写一个非常高性能的应用程序 每毫秒处理和处理数百个事件 非托管 C 比托管 C 更快吗 为什么 托管 C 处理 CLR 而不是操作系统 并且 CLR 负责内存管理 这简化了代码 并且可能比 程序员 在非托管 C 中编写的代码更高效
  • Django-REST 中关系字段的 KeyError

    我有以下型号 class ProductColor models Model color title models CharField max length 50 class BasicProduct models Model produc
  • Laravel 迁移添加外键的最佳方式

    简单的问题 我是 Laravel 的新手 我有这个迁移文件 Schema create lists function Blueprint table table gt increments id table gt string title
  • 如何在 jquery 中使用单个取消委托方法删除多个事件委托

    我可以使以下内容变得更简单 而不是使用 取消委托 两次 吗 div1 undelegate div mouseenter undelegate div mouseleave 我不希望除 mouseenter 和 mouseleave 之外的
  • 哪些后端正在消耗 Google Container Engine Kubernetes 配额

    我正在尝试在 Google Container Engine 上的 Kubernetes 上设置 Ingress 但收到超出配额的错误 请参阅下面的简短输出 Name my ingress Address Default backend d
  • 基于表单字段的查询条件

    因此 我有一个查询 在其中选择一个字段并设置条件 以便它仅根据表单中特定字段的当前值选择记录 标准看起来像这样 Forms FORMAL CERT REVIEW CHECK FORM REVIEW CHECK ID 很简单的东西 但我遇到了
  • 基于 HR 标签,使用 Javascript/JQuery 将 HTML 拆分为 div

    我想根据 HR 标签将从 Web 服务收到的文章 HTML 内容 拆分到不同的 DIV 中 我用一个例子来解释 这是我从服务中收到的 p This is an article bla bla p hr p this is the next
  • MFC 获取文件夹

    嘿 我如何在 MFC 中获取所有文件夹的名称 有什么例子或者我应该研究哪些课程 任何提示将非常感激 我所看到的只是 CFile 据我所见 尽管非常非常少 它看起来没有能力做我想做的事情 所以请指导我 Thanks 调查C文件查找 http
  • 无法在设置中更改 Android 应用程序名称

    我使用 ADT Eclipse 中的向导创建了一个应用程序 我在 strings xml 中编辑了应用程序名称 这更改了启动器图标上的标签 但是 如果我进入 设置 gt 应用程序 它会显示旧名称 我尝试卸载该应用程序 清理并再次运行 但它仍
  • JavaScript - 无法正确添加 2 个数字

    我正在使用 Javascript 模拟计算器 用户可以在给定的文本框中输入 2 个数字 它将显示总和 乘积 差值和除法 这是我的功能 function calculate num1 num2 console log First Number
  • Python pip 无法在 Linux mint 上运行

    我已经遇到这个错误一年了 但仍然找不到解决方案 我正在使用 Linux Mint 17 3 每次我尝试使用 pip 安装某些东西时 都会遇到一堆异常 pip install U scikit learns Exception Traceba
  • 我可以从 .html 页面链接到 .ejs 页面吗?

    我正在制作一个网页 并且一直在 stackoverflow 上查找如何从 html 文件链接到 ejs 文件 人们在说以下内容 在index html中 li a href twitter Twitter a li 在 script js
  • 在 React 中单击组件外部时更改状态

    I have a dropdown as is shown in the following image 当我单击文件夹图标时 它会打开和关闭 因为showingProjectSelector属性处于设置为 false 的状态 constr