【发布时间】:2018-07-17 11:01:58
【问题描述】:
我一直在制作一个包含两个事件的组件 (react.js):onClick 事件和 onDoubleClick 事件。
根据 W3C 的 DOM 规范,无法区分单击事件和导致 dblclick 事件的单击事件。
所以我一直在制作一个带有条件语句的事件。
这是我的内部类组件的功能代码。
handleClick = (e) => {
if(!this._delayedClick) {
this._delayedClick = _.debounce(this.onChangeTargetLabel, 200)
}
if(this.clickedOnce) {
this._delayedClick.cancel()
this.clickedOnce = false
this.editLabel()
console.log('doubleClick')
} else {
this._delayedClick(e)
this.clickedOnce = true
console.log('Click')
}
}
onChangeTargetLabel = (e) => { // click label event
console.log(e)
this.clickedOnce = undefined
const { label } = this.props
label.onChangeTargetLabel(e.target.value)
}
editLabel = () => { // doubleClick label event
const { label } = this.props
label.editLabel()
}
这段代码的问题是,一旦handleClick函数被执行,200ms后,debounce回调函数被执行,而回调function(this.onChangeTargetLabel)没有任何参数。
我想绑定handleClicks参数和this.onChangeTargetlabel的参数。
我该怎么做?谢谢。
【问题讨论】:
-
嗨。那是 handleClick 函数事件参数。很抱歉造成混乱。
-
效果很好!谢谢你!。我认为我的方法太复杂了。
-
太棒了!不客气。
标签: javascript reactjs lodash