0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Immutable.Recordを使うクラスの継承

Posted at

Immutable.Recordを使う複数のデータモデルクラスに全く同じデータ構造や処理ロジックを持つ場合、DRY原則により、クラスを継承する必要がある。

モデルクラスの定義

export default class Hoge extends Immutable.Record({
  item1: null,
  item2: 99,
}) {
  fuga() {
  }
  fuga2() {
    // console.log(this.item2);
  }
}

モデルクラスの継承

  • デフォルト値には、親子のデフォルト定義を両方とも入れる
  • 子クラスに親クラスと違う処理ロジックのみを記載する
export default class Hoge2 extends Hoge {
  fuga2() {
    // console.log('hello, immutable.js');
  }
}

ここがポイント:Hoge2クラスを定義する時に、デフォルトObjectを記載しないこと
何故なら、Hogeは既にクラスになっているので、デフォルトObjectを渡せないからである。
そのため、デフォルトObjectは親クラスで定義する。

Immutable.Recordは関数

Immutable.Recordはただの関数で、Immutable.Record(defaultObj)の実行結果はRecord.Factory(クラス)である。

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?