2017-03-07 82 views
1

我正在使用Immuatable.js,我想擴展Immutable.Record,所以我有一個工作相同的類,但添加了一些默認屬性和函數。在Immutable.js中擴展記錄

查看源代碼,Record.js是一個ES6類,它擴展了KeyedCollection,但是從構造函數返回一個函數。

https://github.com/facebook/immutable-js/blob/master/src/Record.js

我真的不明白這樣做的副作用。

基本上我想一個FooRecord類在那裏我可以做到這一點:

class FooifiedRecord extends FooRecord({ 
    name: '', 
}){ 
    sayMyName(){ 
    return this.name; 
    } 
}; 

而且它等價於:

class FooifiedRecord extends Immutable.Record({ 
    name: '', 
    foo: '', 
}) { 
    doFoo(){ 
    return this.foo + ' bar'; 
    } 
    sayMyName(){ 
    return this.name; 
    } 
} 

但我不知道正確的語法。

編輯:不是類似於How to construct subclasses of Immutable.Record?,涵蓋了Immutable.Record的基本使用。我想知道如何擴展它。

+0

【如何構建Immutable.Record的子類?(HTTP的可能重複:// stackoverflow.com/questions/34922321/how-to-construct-subclasses-of-immutable-record) – jdkschang

回答

1

如果你不與實例的基礎類計劃你可以做什麼justinko recommends here

import { Record } from 'immutable' 

const Base = defaultValues => class extends Record({ 
    id: undefined, 
    links: {}, 
    errors: {}, 
    ...defaultValues 
}) { 

} 

class User extends Base({ 
    firstName: undefined, 
    lastName: undefined 
}) { 
    fullName() { 
    return this.firstName + ' ' + this.lastName 
    } 
}