如何绑定来自混音的反应事件
How do I bind react events from a mixin?
我想为工具提示编写一个简单的mixin。我已经知道如何将我的混合绑定到 DOM 事件:
componentDidMount: function() {
var el = this.getDOMNode();
el.addEventListener('mouseenter', this.mouseenter, false);
el.addEventListener('mouseleave', this.mouseleave, false);
},
。但我想绑定到 React 事件,以利用其一致的事件系统。我该怎么做?
我认为您可能希望在混合组件的render
方法中执行此操作,方法是传入mixin的mouseenter
和mouseleave
处理程序作为道具。我认为一个选项可能如下所示:
var MouseMixin = {
getMouseProps: function() {
return {
onMouseEnter: this.mouseenter,
onMouseLeave: this.mouseleave
}
},
mouseenter: function() {
console.warn('mouseenter', arguments)
},
mouseleave: function() {
console.warn('mouseleave', arguments)
}
};
然后,除了混合它之外,您还需要应用该行为。在 React 0.12 的 JSX 中,您可以使用 ...
spread 运算符来帮助解决这个问题:
var Example = React.createClass({
mixins: [MouseMixin],
render: function() {
return (
<div { ...this.getMouseProps() }>
Hello world
</div>
)
}
});
在这里看到一个工作的小提琴。
相关文章:
- 从父元素取消绑定滚动事件并绑定到子元素
- 如何在没有jQuery的情况下模拟按名称命名的事件或解除单个事件的绑定
- Wijemo事件日历绑定到角度控制器
- 文档事件不绑定到页脚
- 在弹出图像事件上绑定和取消绑定鼠标滚轮 - JQuery
- 事件保持绑定到僵尸实例
- 将单击事件动态绑定到列表
- 将事件动态绑定到表行和列
- 在按钮单击事件上绑定 dx选择框
- Jquery 点击事件不再绑定新创建的标签
- 滚动事件未绑定在指令内 - 角度.js
- 如何在JavaScript中解除给定DOM上所有附加事件的绑定
- jquery中的触发事件和绑定
- 将事件函数绑定到类,但要使用removeEventListener并删除引用,这样garbagecollector才能正
- 主干模型.save()会终止所有与事件的绑定
- 事件未绑定到Angular指令中的元素
- 如何仅解除某些事件的绑定
- Javascript事件未绑定到DOM
- '已结束'HTML5事件未绑定到绑定后创建的元素上
- 如何检测键盘事件已经绑定