秘银上的事件捕获?



没有事件捕获吗? 我喜欢强制事件处理顺序,在自动完成组件中,onblur 事件在单击列表中的项目之前触发,导致列表切换两次,因此在闪烁后保持可见。

Mithril 中的事件绑定是一个非常简单的便利功能,它代表使用标准的非捕获addEventListener绑定事件,并自动在分辨率上排队重绘(这与 React 等其他视图库形成鲜明对比,其中事件绑定是一个精心设计的、固执己见的系统(。

当您想以不同的方式做事时,Mithril 允许您内联访问生命周期方法,从而非常轻松地进入直接 DOM 访问。具体来说,oncreate方法将允许您以您选择的方式绑定事件。

m('div', {
// this
onclick : e => {},
// is the same as this
oncreate: vnode => {
vnode.dom.addEventListener('click', e => {
m.redraw()
})
},
})

请注意,click事件将始终在blur后解决,即使前者正在捕获而后者正在冒泡 - 您可能需要改用mousedown。下面是一个演示,演示如何绑定捕获事件并记录不同事件的序列。

显然不支持捕获,尽管谷歌展示了几年前的m.capture方法。您只需使用真正的参数注册 eventListener 即可捕获它,我想在处理程序的末尾调用 m.redraw((。

最新更新