>

immutable.js를 처음 사용합니다. immutable.js의 맵과 ES6의 맵 사이에 차이점이 있습니까? 차이가 없다면 왜 immutable.js를 사용해야합니까?

immutable.js

const { Map } = require('immutable')
const map1 = Map({ a: 1, b: 2, c: 3 })
const map2 = map1.set('b', 50)
map1.get('b') // 2
map2.get('b') // 50

ES6

var myMap = new Map();
myMap.set(NaN, 'not a number');
myMap.get(NaN); // "not a number"

  • 답변 # 1

    Immutable.js 맵에서 set을 실행할 때 포함 된 데이터를 수정하면 메모리에 다른 주소가 있습니다. 그것은 map1 !== map2 를 의미  첫 번째 예에서는 ES6 맵을 사용할 때 동일한 코드가 동일하다고 말할 수 있습니다.

    사람들이 !== 로 다른 데이터가 나오는지도에 관심을 갖는 이유  React, Flux 및 Redux와 같은 도구는 모두 상태에서 변경된 사항이 있는지 빠르게 확인하는 데 의존합니다. 와이즈 비즈  사용할 수있는 가장 빠른 검사이지만 기본적으로 참조의 메모리 주소를 비교합니다.

    해당 개체의 내용을 변경하면 성능상의 이유로 자바 스크립트가 얕은 복사본을 사용하기 때문에 메모리 주소가 여전히 동일 할 수 있습니다. Immutable.js는 불변성을 보장합니다. 개체를 변경할 수 없습니다. 지도를 변경하면 새로운지도가됩니다. 그것은 === 를 의미  비교는 항상 정확합니다.

    상태 관리 라이브러리 중 하나를 사용하지 않고 유행이기 때문에 Immutable.js를 사용하고 있다면 꼭 그럴 필요는 없습니다! 이 라이브러리를 사용하더라도 불변성을 보장하는 다른 방법이 있습니다 --- ===  필요한 기능을 제공하고 오버 헤드를 줄입니다.

    dot-prop-immutable

관련 자료

  • 이전 java - 작업 공간을 요청한 후 시작시 Eclipse 네온 오류
  • 다음 c# - XamarinForms에서 동적으로 3 개의 피커 세트 만들기