绑定事件发射器上的单个事件
Binding for a single event on an event emitter
React 组件需要事件才能接收来自其他对象的状态更改。为了使组件可重用,我想在组件外部定义触发状态更改的事件类型/名称。所以我在考虑一个绑定事件发射器和事件类型/名称的类。React 组件只需要调用 .on,没有任何事件类型/名称。将更多事件合并为一个事件也是有意义的。我没有在框架中看到这些泛型类,所以我不确定是否有另一种设计模式,我只是搜索了错误的关键字。
这是处理通用 React 组件事件的正确方法吗?
这里有一个例子,所以你有一个更好的主意:
var emitter = {};
_.extend(emitter, Backbone.Events);
var Component = React.createClass({
getInitialState: function () {
var self = this;
self.props.update.on(function (text) {
self.setState({text: text});
});
return {text: ''};
},
render: function () {
return React.DOM.p({}, this.state.text != null ? this.state.text : '');
}
});*
// this would require to know the event type/name in the component
//var component = React.createFactory(Component)({update: emitter});
var binding = new Event(emitter, 'label:changed');
var component = React.createFactory(Component)({update: binding});
// this would merge multiple events into a single one
/*var binding = Event.merge([
new Event(emitter, 'label:changed'),
new Event(emitter, 'label:deleted')]);*/
var component = React.createFactory(Component)({update: binding});
你熟悉 Flux 架构吗?它使用控制器视图可以侦听的应用商店中的事件发射器。这是你所描述的一个非常好的例子。
控制器视图是一个顶级组件,它侦听新事件,然后通过 props 将数据向下传递到较低级别的组件。
无论你是否实现Flux,Facebook都有一些很好的例子,可以在他们的待办事项列表示例中回答你的问题。
相关文章:
- 用于多个类事件Jquery的单个函数
- 如何在没有jQuery的情况下模拟按名称命名的事件或解除单个事件的绑定
- 如何编写单个 Jquery 函数以在文档更改和就绪事件时触发
- 为什么我在单个事件上执行多个
- 如何在jquery中使用单个取消删除方法删除多个事件委托
- 如何使用jQuery跟踪单个dom元素上的点击事件,并相应地更新其点击计数器
- 在javascript中阻止文档执行默认操作时,在单个元素中使用默认事件
- 从单个元素中Jquery关闭事件
- androidphonegap-在单个html页面中导航功能或事件时实现后退按钮
- 如何在单个条件下检测键码和单击事件
- jQuery:单个更改事件以触发多个函数不起作用
- 将多个 Javascript 事件折叠为单个事件
- 绑定事件发射器上的单个事件
- 多个事件,用于触发 Chrome 书签 API 中的单个函数
- 尝试在单个类 Jquery 或 js 上应用事件
- 页面上的单个图像会显著减慢所有 jquery 事件的速度
- 从单个 Div 元素中删除单击事件
- 取消单个 Web 工作者事件
- 当文档中的单个元素准备就绪时触发事件的最佳方法
- 如何使用单个按钮执行单击事件以选择不同的 DIV