【问题标题】:Learning reactJs Flux and encounter the addEventListener confusion学习 reactJs Flux 遇到 addEventListener 的困惑
【发布时间】:2016-01-11 22:43:44
【问题描述】:

我正在通过下面的链接学习 reactjs 通量模式

https://scotch.io/tutorials/getting-to-know-flux-the-react-js-architecture

我完全被下面的代码弄糊涂了,下面的代码什么时候会被触发或使用?我在应用程序中看不到 this._onChange 将被触发的任何地方...请帮助并解释任何建议,因为我开始学习。

// Listen for changes
  componentDidMount: function() {
    ShoeStore.addChangeListener(this._onChange);
  },

  // Unbind change listener
  componentWillUnmount: function() {
    ShoesStore.removeChangeListener(this._onChange);
  },

在商店中,是否意味着为了触发更新需要运行ShoesStore.emitChange()

// Emit Change event
  emitChange: function() {
    this.emit('change');
  },

  // Add change listener
  addChangeListener: function(callback) {
    this.on('change', callback);
  },

  // Remove change listener
  removeChangeListener: function(callback) {
    this.removeListener('change', callback);
  }

【问题讨论】:

  • @BinaryMuse 感谢队友,我确实了解 EventEmitter,但我只是对何时触发感到困惑?正如 dytori 所说,商店将自动调用 onChange。
  • 当您创建商店时,您通常会自己致电emitChange()(通常不是自动的)。
  • @BinaryMuse 谢谢队友,我会测试一下。再次意识到它是主人......布兰登。
  • @BinaryMuse 你是对的,找出这行代码 // 如果动作被响应,发出更改事件 ProductStore.emitChange();

标签: reactjs flux


【解决方案1】:

正确答案:(来自 BinaryMuse 的总结)

当您创建商店时,您通常会自己调用 emitChange()(它通常不是自动的)。

【讨论】:

    【解决方案2】:

    在典型的Flux 应用程序中,您的存储发出更改(如EventEmitter)和_onChange 被调用,因为它已由addChangeListner 分配,之后需要将其删除,否则会导致内存泄漏。 componentDidMountcomponentWillUnmount 在某些生命周期阶段被调用,正如方法名称所说,就在组件安装之后和卸载之前。

    【讨论】:

    • 所以这个 _this.onchange 事件监听器被添加了,但是什么时候触发呢?谢谢(自动触发?)
    • 当商店发出变化时。它会启动分配的事件侦听器。
    • 是的,发出变化会自动调用onChange
    猜你喜欢
    • 1970-01-01
    • 2016-12-18
    • 2019-04-18
    • 2016-05-20
    • 2014-10-03
    • 1970-01-01
    • 2019-06-17
    • 2020-06-14
    • 2015-09-22
    相关资源
    最近更新 更多