javascript - 在 Immutable.js 中扩展记录

标签 javascript immutable.js es6-class

我正在使用 Immutable.js,并且我想扩展 Immutable.Record,因此我有一个工作原理相同但添加了一些默认属性和函数的类。

查看源码,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 的基本使用。我想知道如何扩展它。

最佳答案

如果您不打算使用 new 实例化您的基类,您可以执行 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 
  }
}

关于javascript - 在 Immutable.js 中扩展记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42653048/

相关文章:

JavaScript : Encode byte [ ] array to base64

javascript - 使用 node.js 从文件中返回搜索文本的行

javascript - 不可变 : filtering a List of Maps

javascript - 更新 ImmutableJS 列表中的多个条目

javascript - 这在 devtools 中是未定义的,即使这不是未定义的

javascript - 使用 'this' 变量的类和子类

javascript - HTML5 音频 API - "audio resources unavailable for AudioContext construction"

javascript - 如何请求用户信息的权限?

javascript - 不能在交集类型交集的任何成员上调用方法 - Flow|React|Immutable

javascript - Axios Instance 类中的取消请求