ImmutableJS - arthur791004/notes GitHub Wiki

Breif

  • mutable: 可以修改的
  • immutable: 不可修改的

Why

  • 可以修改的 object ,在 project 變得日益龐大的時候會變得很複雜
  • Side Effect

Others

  • Object.assign 在 object 比較複雜的情況下,效能會變差
  • shallow copy
  • deep cody

How does it do

  • Persistent Data Structure
  • Structural Sharing
    • 當某個節點 update 時,不會整份 copy ,只會更新需要變動的部分

Example

import { Map } from 'immutable';

const a = Map({
  select: 'users',
  filter: Map({ name: 'Cam' })
})

const b = a.set('select', 'people');

a === b; // false
a.get('filter') === b.get('filter'); // true

Pros

  • 讓程式變得更單純
  • 節省記憶體

Data structure

  • Map ===> Object
  • List ===> Array
  • Set ===> 沒有順序且不可重複的 Array

Reference