Почему назначение свойств в init и didUpdateAttrs отличается?

В Ember.js Guide есть такой пример:

import Ember from 'ember';

export default Ember.Component.extend({
  init() {
    this._super(...arguments);
    this.errors = [];
  },

  didUpdateAttrs() {
    this._super(...arguments);
    this.set('errors', []);
  },

  ...
});

Зачем присваивать errors собственность отличается в init а также didUpdateAttrs? Каковы их различия?

ОБНОВЛЕНО согласно ответу @locks:

Когда устанавливается наблюдаемость? После init? Но значения родительского компонента были назначены свойствам дочернего компонента до init.

1 ответ

Решение

Это должно быть в основном с наблюдаемостью. На initНаблюдаемость не была установлена, поэтому this.errors = [] а также this.set('errors', []) функционально похожи.

Если бы вы должны были сделать this.errors = [] внутри didUpdateAttrs ловушка жизненного цикла, соответствующие вычисленные свойства и шаблон не будут обновляться. Это потому, что вам нужно get/set быть КВО-совместимым.

Другие вопросы по тегам