在 ReactJS 中禁用 ContextMenu

2024-03-25

第一篇文章在这里,所以希望我能以最有帮助的方式提出这个问题。我对编码还很陌生,在努力推动自己的过程中,我决定尝试使用 React 来重新创建扫雷,而不是使用任何教程。我已经获得了很多功能,但我真的停留在这部分上。我正在使用事件侦听器“onContextMenu”来注册右键单击以“标记”程序中的地雷。但我无法找到隔离它的正确方法,或者可能是语法问题导致菜单无法同时弹出。在 JS 中,在事件监听器上返回 false 似乎非常简单,但在 React 中我无法弄清楚。

我目前正在使用“onContextMenu”来处理右键单击并调用一个函数来处理该事件侦听器的标志分配。我还可以在函数中禁用 contextMenu 显示吗?

感谢您提供的任何帮助!

正在渲染的 div 现在看起来像这样:

<div
   contextMenu="none"
   className="square"
   onContextMenu={() => this.props.rightClick(props.arrayVal)}
   onClick={() => {this.props.playerTurn(this.props.index)}}
   style={{color:COLORS[this.props.arrayVal], backgroundImage:this.backgroundChooser(this.props.arrayVal)}}
    >
       {this.squareContent(this.props.arrayVal)}
</div> 

被调用的函数如下所示:

rightClick = (id) => {
    let { board, gameWon, minesLeft } = this.state
    let mineCount = minesLeft
    let move = board
    if (gameWon === false) {
        if (board[id] === -1) {
            move[id] = 9
            mineCount -= 1
        } else if (board[id] === 9) {
            move[id] = "?"
            mineCount += 1
        } else if (board[id] === "?") {
            move[id] = -1
        }
        this.setState({
            board: move,
            minesLeft: mineCount
        })
    }
}

我又浪费了很长一段时间,请一位高级开发朋友帮我看看这个。这就是解决方案。希望它对其他人有帮助:-)!请参阅下面的评论:


我知道它是旧的,但这是我的解决方案: 首先,选择要禁用 contextMenu 的元素(在本例中为 div 元素),然后将此事件添加到该元素:

<div onContextMenu={(e)=> e.preventDefault()}... />

ReactDOM.render(<div onContextMenu={(e)=> e.preventDefault()}>right click me</div>, root)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.11.0/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.11.0/umd/react-dom.production.min.js"></script>
<div id="root"></div>

右键单击上面的 div 不会触发上下文菜单

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

在 ReactJS 中禁用 ContextMenu 的相关文章

  • 有没有办法在 Next.js 的 getStaticProps 中使用 redux 工具包?

    我使用时获取数据useEffect代替getStaticProps 但在getStaticProps它表明钩子只能在功能组件中使用 import Head from next head import Image from next imag
  • 向 JS 计算器添加键盘支持时出现的问题

    我想为我的计算器添加键盘支持 当我用键盘按下操作 即 或 时 js将其视为数字 而不是操作 例如 当我通过点击计算 10 11 时 我将得到 21 作为结果 当我通过键盘输入时 我会得到 10 为什么会发生这种情况 是否可以改变它 div
  • 将组件注册到现有的 Vue.js 实例

    我是 Vue js 新手 我想注册一个本地组件 如下所述 https v2 vuejs org v2 guide components html Local Registration https v2 vuejs org v2 guide
  • Sails.js - 如何更新嵌套模型

    attributes username type email validated by the ORM required true password type string required true profile firstname s
  • 变量前面加双下划线

    我的节点代码中有以下代码片段 var fs require fs fs readdir dirname function err files console log files 为什么变量 dirname 有双下划线 我知道一个下划线是私有
  • getElementsByClassName & IE8:对象不支持此属性或方法[重复]

    这个问题在这里已经有答案了 I know getElementsByClassName 不支持IE8 你知道我可以用什么来代替吗 我因错误而变得烦人 对象不支持此属性或方法 HTML 代码是 function sumar var elems
  • 如何在启用导航栏的情况下打开新的浏览器窗口?

    我有这个JS方法 function OpenLink strDestination var features left 10 top 10 location 0 menubar 0 resizable 0 scrollbars 1 stat
  • FormData 中的 Blob 为 null

    我正在尝试通过远程 API 通过 ajax 在 android 中发送创建的照片 我在用着相机图片背景 https github com an rahulpandey cordova plugin camerapicturebackgrou
  • Famo.us 滚动视图高度

    我正在尝试使用著名的顺序布局在滚动视图下方添加图像 但滚动视图的高度有问题 这就是我创建滚动视图的方式 var scrollview new Scrollview direction Utility Direction X options
  • AngularJS - 服务、工厂、过滤器等中的依赖注入

    因此 我想在我的 Angular 应用程序中使用一些插件和库 目前 我只是引用这些函数 方法 因为它们是在 99 的应用程序中以完全忽略依赖注入的方式使用的 我有 例如 javascript 库 MomentJS 它处理格式化和验证日期 并
  • 使用 Javascript eval() 100% 安全吗?

    我正在编写一个生成 Javascript 代码的 PHP 库 Javascript 代码有许多名为component001 component002 etc 页面通过 AJAX 动态加载 我需要通过 URL 变量传递组件的名称 然后由脚本进
  • 添加选项以选择框而不用 Internet Explorer 关闭该框?

    我正在尝试构建一个包含多个下拉选择框的网页 这些下拉选择框在首次打开时异步加载其选项 这在 Firefox 下工作得很好 但在 Internet Explorer 下则不然 下面是我想要实现的目标的一个小例子 基本上 有一个选择框 ID 为
  • 如何正确删除动画集中引用的 Raphael SVG 元素?

    我有一组动画 Raphael SVG 元素 我正在通过用户发起的 ajax 调用添加新元素并删除旧元素 我 set push 新元素 但因为我需要删除的元素通常不是集合中的最后一个元素 所以我使用 element remove 而不是 se
  • 大型应用的回流/布局性能

    我正在使用 GWT 构建一个 HTML 应用程序 其性能总体上是正确的 有时 它会加载 DOM 中的许多对象 并且应用程序会变得很慢 我使用 Chrome 开发者工具分析器来查看时间花在哪里 在 Chrome 下 一旦应用程序被编译 即没有
  • 我可以在不使用 Jquery UI 的情况下获得 Jquery Pulsate Effect 吗?

    我遇到了由于某种原因无法使用 Jquery UI 的情况 我正在尝试在不使用 Jquery UI 的情况下获得 Jquery UI 脉冲效果 与此链接类似 http docs jquery com UI Effects Pulsate ht
  • 如何上传文件 - sails.js

    我可以下载图像和 pdf 但无法下载文档文件 doc pptx odt 下载文档 doc pptx odt 时 仅将其下载为 ZIP XML 文件 我可以做什么 我在用着 填写上传文件文档 https github com balderda
  • javascript/jquery 禁用点击提交按钮,防止重复提交

    所以我的提交按钮如下所示 a href img src images user create product png border 0 a 当我双击它时 显然会双重提交 问题是 我将信息保存在数据库中 因此那里会有重复的信息 我不想那样 这
  • d3力定向布局-链接距离优先

    在 d3 中使用力导向布局 如何使链接距离成为优先事项 同时仍然保持良好的图形布局 如果我指定动态链接距离 但保留默认费用 则我的图形距离会因费用函数而发生一些变形 并且不再是准确的距离 但是 如果我删除电荷 图表将如下所示 任何建议表示赞
  • 无法从 JSON 请求获取数据,尽管我知道它已返回

    我试图获取从 getJSON 返回的数据 但我无法让它工作 我已经在 search twitter API 上尝试了相同的代码 效果很好 但它不适用于其他网站 我知道数据已返回 因为我在使用检查器时可以找到它 我通过检查器找到的值是 id
  • 角度 ng-repeat 根据条件添加样式

    我在 div 列表上使用 ng repeat 并且在渲染此 div 的 json 中手动添加项目 我需要定位我在 json 中添加的最后一个 div 它会自动在屏幕上渲染 即 couse 光标所在的位置 其余部分保持在相同位置 但没有给出渲

随机推荐

  • 确定 Java 8 中的列表是否由字谜元素组成

    我想确定列表是否是字谜或不使用 Java 8 输入示例 cat cta act atc tac tca 我已经编写了以下函数来完成这项工作 但我想知道是否有更好 更优雅的方法来完成这项工作 boolean isAnagram String
  • Kotlin 和 Firebase 读写数据

    我已经学习 Kotlin 3 周了 所以我想从我的 Firebase 数据库中读取数据 这是写入数据的MainActivity kt val database Firebase database val latitude latitude
  • 如何使用 shell 脚本连接 2 个 csv 文件?

    我正在尝试制作一个 shell 脚本 它将通过以下方式组合两个 csv 文件 我有两个 csv 文件 f1 csv 和 f2 csv f1 csv的格式为 startId endId roomNum f2 csv 的格式如下 startId
  • 使用 Wget 跳过成功下载的文件

    所以我有这个 Bash 子例程来使用 wget 下载文件 现在我的问题是如何跳过成功下载的文件 该脚本会下载很多文件 一旦下载失败 它会重新下载所有文件 覆盖那些从一开始就成功的下载 可能会因为重新下载而不完整 那么如何跳过那些下载成功的文
  • Heroku 上的媒体文件

    如果我在 Heroku 上托管一个小型 Django 网站 并且只使用一台 dyno 那么是否可以在该服务器上上传媒体文件 或者我是否必须使用 AWS S3 存储来存储媒体文件 媒体存储还有哪些其他替代方案 不 在 Heroku 文件系统上
  • 如何以编程方式检查、获取和设置 Android 手机中的触摸设置?

    是否可以通过编程方式获取 Android 中的各种触摸设置 例如 gt 拨号盘按键音 gt 触摸声音 gt 屏幕锁定声音 gt 触摸时振动 我尝试访问 System Settings 中的各种常量 但我没有看到任何提及触摸设置的常量 任何人
  • pImpl 是否从根本上解决了 C++ DLL 问题?

    我正在尝试从带有 stl 成员的 DLL 中导出 C 类 这是我的主要课程 class MATHFUNCSDLL API MyMathFuncsImpl public std vector
  • 如何限制对 Firestore 中用户拥有的文档的写入?

    我有一些文章 每篇文章都有一个参考字段到个人资料document撰写该特定文章的作者的姓名 经过身份验证的用户 使用 Firebase 的身份验证 将与这些配置文件关联 仅当当前登录的用户拥有该文章时 如何才能使这些文章可由该用户编辑 在
  • 构造函数中具有实例名称知识的 Matlab 类

    我想要一个类 在其构造函数中可以了解其实例名称 提取为字符串 目前 我像这样提取名称 classdef mysession methods Access public function this mysession varargin thi
  • 在 Rails 5+ 中禁用 sprocket 资源缓存

    我已经尝试了很多禁用 Rails 中的 sprocket 资源缓存 但没有成功 我尝试配置development rb 但它根本不起作用 我正在使用此代码来禁用缓存生成 config assets cache store null stor
  • 更改最后一个
  • 的 CSS
  • 我想知道是否有某种方法可以更改最后一个 CSS 属性li在使用 CSS 的列表中 我已经研究过使用 last child 但这看起来确实有问题 我无法让它为我工作 如有必要 我将使用 JavaScript 来完成此操作 但我想知道是否有人可
  • 如何解释 Seaborn distplot 的轴

    Snippet plt figure figsize 10 5 plt xticks np arange 0 11 1 sns distplot 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 kde F
  • 如何增加LVL缓存有效时间?

    我已经在我的应用程序中实施了 LVL 服务器托管策略 我知道lvl服务器响应会在设备中缓存一段时间 因此用户可以在没有互联网连接的情况下使用应用程序 然后lvl使用缓存的许可证 我想知道这个期限到底有多长以及如何延长它 基本上 lvl 我已
  • 用于在不同工作簿中选择范围的 VBA 对话框

    我想允许用户选择可能位于不同工作簿中的范围 我尝试使用 inputbox type 8 来执行此操作 它可以选择工作簿中的数据 但不允许我在不同的工作簿中选择范围 因此我想要一个允许我执行此任务的对话框 由于我有空 我为您创建了一个示例 创
  • .JSchException:数据包损坏

    我在 RHEl 6 上使用 Jsch 0 1 51 和 Jdk 1 7 51 在与远程计算机进行会话时 我收到以下异常 com jcraft jsch JSchException Packet corrupt at com jcraft j
  • Python venv env 失败 - [WinError 2] 系统找不到指定的文件

    我在 Windows 10 计算机上安装了最新版本的 Python 3 8 2 我以前有Python 3 7 我将其卸载并确认在系统路径中不再引用它 安装最新版本后 我以管理员身份运行CMD py m venv env 我收到此错误 错误
  • 添加到Python中正在迭代的双端队列?

    我在 Python 中有一个双端队列 正在对其进行迭代 有时 当我进行交互时 双端队列会发生变化 从而产生RuntimeError deque mutated during iteration 如果这是一个 Python 列表而不是双端队列
  • 如何部署Tomcat的示例websocket应用程序?

    我正在尝试了解如何部署 Apache Tomcat 7 中引用的示例WebSocket 操作方法 http tomcat apache org tomcat 7 0 doc web socket howto html page 应用程序开发
  • 根据室外温度设置背景颜色

    嘿哦 所以 我有一个温度小部件要在我正在进行的项目上实现 没有什么特别困难的 我有一个免费的 API 来检索我需要的数据等 但是 和我一起工作的可爱设计师有一个颜色特征 我对此一无所知 他会根据当前的天气温度来定义背景颜色 我的意思是如果温
  • 在 ReactJS 中禁用 ContextMenu

    第一篇文章在这里 所以希望我能以最有帮助的方式提出这个问题 我对编码还很陌生 在努力推动自己的过程中 我决定尝试使用 React 来重新创建扫雷 而不是使用任何教程 我已经获得了很多功能 但我真的停留在这部分上 我正在使用事件侦听器 onC