Разве мы не можем использовать простые Ember Objects вместо Ember Mixins? - PullRequest
0 голосов
/ 02 апреля 2020

По сути, я не мог понять разницу между Ember Object и Ember Mixin. Если Ember.Mixin.create () сам по себе расширен от Ember.Object, то почему бы нам не смешивать объекты, созданные Ember.Object.create () вместо Ember.Mixin.create ()?

Почему не мы используем Ember объекты, подобные этому

let TestObject = Ember.Object.create({
  init() {
    this._super(...arguments);
    this.set('list', Ember.A([]));
  }
}); 

let TestComponent = Ember.Component.extend(TestObject, {});

Вместо использования Ember mixin, как показано ниже

let TestMixin = Ember.Mixin.create({
      init() {
        this._super(...arguments);
        this.set('list', Ember.A([]));
      }
    }); 

let TestComponent = Ember.Component.extend(TestMixin, {});

1 Ответ

0 голосов
/ 02 апреля 2020

Так что я не хочу go рассматривать исторические аспекты миксинов, кроме того, что вы не должны их реально использовать, и, в частности, ваш пример приведет ко многим ошибкам из-за того, как состояние распределяется между миксинами.

В вашем примере с миксином на самом деле будет делиться состояние между различными экземплярами компонента при изменении списка.

Действительно, лучше всего делать вид, что миксины никогда не существовали.

РЕДАКТИРОВАТЬ: Обсуждение амортизации миксина https://github.com/emberjs/rfcs/issues/534

...