React-contextmenu 收到错误的右键单击触发器
React-contextmenu is receiving a false trigger for a right click
我在 React 应用程序中使用 react-contextmenu with PIXI.js 时遇到了一个奇怪的错误(没有其他库在运行)。我有一个可以拖放到位的地图组件。我发现,如果用户按住左键单击按钮并晃动鼠标一会儿,它会错误地触发上下文菜单出现,即使用户没有右键单击也是如此。它不会破坏应用程序,但它仍然是一个烦人的错误,我想弄清楚如何消除它。相关代码如下:
import React from 'react'
import * as PIXI from 'pixi.js'
import {ContextMenu, MenuItem, ContextMenuTrigger} from 'react-contextmenu'
export default class MyComponent extends React.component{
constructor(props){
super(props)
}}
render(){
return <React.Fragment>
<ContextMenuTrigger id='aUniqueID'>
<div className='stageDiv'
ref=>{(el)=>{this.stageRef = el}}
/>
</ContextMenuTrigger>
<ContextMenu id='aUniqueID'>
<MenuItem onClick={this.myAction.bind(this)}/>
</ContextMenu>
</ReactFragment>
componentDidMount(){
const app = new PIXI.Application({
width:screen.width,
height:screen.height*0.8,
sharedLoader:true,
sharedTicker:true
})
app.renderer.plugins.interaction.on('mouseMove',this.mover.bind(this)).on('mousedown',this.onClick.bind(this))
this.stageRef.append(app.view)
app.stage.interactive = true
this.app = app
this.createMap()
this.setup()
{
this.createMap(){
//Just draws three sprites at equal intervals along the screen. No click events are bound to this code.
}
this.onClick(e){
this.setState({clickX:e.data.global.x,clickY:e.data.global.y,clicked:true})
}
onMouseMove(e){
if(this.state.clicked){
let x = e.data.global.x
let y = e.data.global.y
let xDiff = this.state.clickX - x
let yDiff = this.state.clickY - y
this.arrayOfDraggableSprites.forEach((sprite)=>{
sprite.x -= xDiff
sprite.y -= yDiff
}
}
我认为该代码中没有任何内容会触发错误的右键单击,但希望其他人会这样做。
默认情况下,react-contextmenu 配置为适用于移动设备,"hold to display" 值为 1000 毫秒。它假定用户在滚动时不会按住鼠标按钮 1 秒钟,而我的应用程序并非如此。
通过将 hold to display 值设置为 -1,它不再触发错误。一如既往,解决方案是寻求帮助,然后在一小时后立即解决。
我在 React 应用程序中使用 react-contextmenu with PIXI.js 时遇到了一个奇怪的错误(没有其他库在运行)。我有一个可以拖放到位的地图组件。我发现,如果用户按住左键单击按钮并晃动鼠标一会儿,它会错误地触发上下文菜单出现,即使用户没有右键单击也是如此。它不会破坏应用程序,但它仍然是一个烦人的错误,我想弄清楚如何消除它。相关代码如下:
import React from 'react'
import * as PIXI from 'pixi.js'
import {ContextMenu, MenuItem, ContextMenuTrigger} from 'react-contextmenu'
export default class MyComponent extends React.component{
constructor(props){
super(props)
}}
render(){
return <React.Fragment>
<ContextMenuTrigger id='aUniqueID'>
<div className='stageDiv'
ref=>{(el)=>{this.stageRef = el}}
/>
</ContextMenuTrigger>
<ContextMenu id='aUniqueID'>
<MenuItem onClick={this.myAction.bind(this)}/>
</ContextMenu>
</ReactFragment>
componentDidMount(){
const app = new PIXI.Application({
width:screen.width,
height:screen.height*0.8,
sharedLoader:true,
sharedTicker:true
})
app.renderer.plugins.interaction.on('mouseMove',this.mover.bind(this)).on('mousedown',this.onClick.bind(this))
this.stageRef.append(app.view)
app.stage.interactive = true
this.app = app
this.createMap()
this.setup()
{
this.createMap(){
//Just draws three sprites at equal intervals along the screen. No click events are bound to this code.
}
this.onClick(e){
this.setState({clickX:e.data.global.x,clickY:e.data.global.y,clicked:true})
}
onMouseMove(e){
if(this.state.clicked){
let x = e.data.global.x
let y = e.data.global.y
let xDiff = this.state.clickX - x
let yDiff = this.state.clickY - y
this.arrayOfDraggableSprites.forEach((sprite)=>{
sprite.x -= xDiff
sprite.y -= yDiff
}
}
我认为该代码中没有任何内容会触发错误的右键单击,但希望其他人会这样做。
默认情况下,react-contextmenu 配置为适用于移动设备,"hold to display" 值为 1000 毫秒。它假定用户在滚动时不会按住鼠标按钮 1 秒钟,而我的应用程序并非如此。
通过将 hold to display 值设置为 -1,它不再触发错误。一如既往,解决方案是寻求帮助,然后在一小时后立即解决。