sch*_*luk 5 javascript events event-handling dom-events reactjs
考虑这个组件:
<Card onClick={openWindowHandler}>
<Editable onDoubleClick={enableInputHandler} />
</Card>
Run Code Online (Sandbox Code Playgroud)
我想要实现的是仅onDoubleClick在调度事件时停止事件传播,因此openWindowHandler不会调用该函数。不过,onClick先火再说onDoubleClick!
我可以通过应用函数来区分调用的是哪种事件类型_.debounce,但此时事件已经被调度,因此无法调用stopPropagation().
<Card onClick={openWindowHandler}>
<Editable onDoubleClick={enableInputHandler} />
</Card>
Run Code Online (Sandbox Code Playgroud)
有什么办法可以做到吗?
编辑:
对元素的单击<Editable />应该冒泡给父母,从而引起openWindowHandler呼叫。
小智 0
例子:
// This will return a event
function clickHandlerModule() {
var clickCount = 0;
var timer = null;
var delay = 250;
return function(event) {
clickCount++;
if(clickCount === 1){
timer = setTimeout(function(){
console.log('SINGLE CLICK');
clickCount = 0;
}, delay);
} else {
clearTimeout(timer);
console.log('DOUBLE CLICK');
clickCount = 0;
}
}
}
class App extends React.Component {
constructor() {
super();
this.clickHandler = clickHandlerModule()
}
render () {
return (
<Card onClick={this.clickHandler}>
<Editable />
</Card>
)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2906 次 |
| 最近记录: |