簡體   English   中英

我們不能使用普通的 Ember 對象代替 Ember Mixins 嗎?

[英]Can't we use plain Ember Objects in place of Ember Mixins?

基本上我無法理解 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, {});

所以我不想討論 mixin 的歷史方面,除非你不應該真正使用它們,特別是你的例子會導致許多錯誤,因為 mixin 之間共享狀態的方式。

在您的 mixin 示例中,當改變列表時,實際上會在不同的組件實例之間共享狀態。

真的,最好的辦法是假裝 mixin 一開始就不存在。

編輯:關於 mixin 折舊的討論https://github.com/emberjs/rfcs/issues/534

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM