从具有React和Bacon的节点获取EventStream

时间:2015-09-02 11:30:10

标签: javascript reactjs frp bacon.js

这就是我如何通过bacon.js从常规DOM节点获取EventStream:

var el = document.getElementById('input1');
var stream = Bacon.fromEvent(el, 'input')

使用React时,可以在一些render()迭代后重新创建DOM节点,因此从真实DOM节点(使用React.findDOMNode)获取事件不是一种选择。我现在唯一能想到的选择是手动处理事件然后将它们推送到总线:

var Component = React.createClass({
  streams: {},
  componentDidMount: function() {
    this.streams.inputBus = new Bacon.Bus();
  },
  componentWillUnmount: function() {
    this.streams.inputBus.end();
  },
  onInput: function(e) {
    this.streams.inputBus.push(e);
  },
  render: function() {
    return (
      <input type="text" onInput={this.onInput} />
    );
  }
});

这种方法可以,还是有更好的解决方案?

1 个答案:

答案 0 :(得分:4)

我会说没关系。在这两个例子中使用了类似的方法: