Изучаем reactJs Flux и сталкиваемся с путаницей addEventListener

Я изучаю шаблон потока 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);
  }

person Bill    schedule 14.10.2015    source источник
comment
code.tutsplus.com/tutorials/using-nodes-event -module--net-35941 — хороший общий обзор этого шаблона.   -  person Michelle Tilley    schedule 14.10.2015
comment
@BinaryMuse спасибо, приятель, я понимаю EventEmitter, но я просто не понимаю, когда он срабатывает? Как заявляют dytori, хранилище автоматически вызывает onChange.   -  person Bill    schedule 14.10.2015
comment
Когда вы создаете магазин, вы обычно сами вызываете emitChange() (обычно это происходит не автоматически).   -  person Michelle Tilley    schedule 14.10.2015
comment
@BinaryMuse спасибо, приятель, я проверю. Просто осознайте, что это снова хозяин... Брэндон.   -  person Bill    schedule 14.10.2015
comment
@BinaryMuse вы правы, найдите эту строку кода // Если на действие был дан ответ, создайте событие изменения ProductStore.emitChange();   -  person Bill    schedule 14.10.2015


Ответы (2)


В типичном приложении Flux ваш магазин выдает изменение (как EventEmitter), а _onChange вызывается, потому что оно было назначено addChangeListner, которое впоследствии необходимо удалить, иначе это вызовет утечку памяти. componentDidMount и componentWillUnmount вызываются на определенных этапах жизненного цикла, как следует из названий методов, сразу после монтирования компонента и непосредственно перед размонтированием.

person dytori    schedule 14.10.2015
comment
Итак, этот обработчик событий _this.onchange добавлен, но когда он сработает? спасибо (срабатывает автоматически?) - person Bill; 14.10.2015
comment
Когда магазин выдает сдачу. Он пинает назначенных прослушивателей событий. - person dytori; 14.10.2015
comment
И да, отправка изменений автоматически вызывает onChange. - person dytori; 14.10.2015

Правильный ответ: (резюме от BinaryMuse)

Когда вы создаете хранилище, вы обычно сами вызываете emitChange() (обычно это не происходит автоматически).

person Bill    schedule 14.10.2015