2016-09-07 5 views
0

트리 전체를 변경하지 않고 중첩 된 변경 불가능한지도 항목을 업데이트하려면 어떻게해야합니까?업데이트 됨 중첩 됨 immutable.js에서 변경할 수 없음

예 :

var tree = Map({ 
branch1:Map([]), 
branch2:Map({ 1: Map({id:1,value:'hello'}) }), 
}); 

내가 어떻게 tree.branch2.1.value를 업데이트 할 수 있습니다?

이렇게하면 branch1이 새 복사본을 갖게됩니까?

Reactjs Redux 앱에서 사용하고 있습니다. 나는 또한 선택기를 사용하고 있기 때문에, 나는 선택기 다시

+0

https://github.com/reactjs/reselect- 상태가 업데이트 될 때 다시 계산할 필요가 없도록 메모 작성된 선택기를 만드는 멋진 라이브러리를 참조하십시오. – elijah

답변

3

항상 완전히 새로운 개체를 반환 것이다 Immutable.js 객체의 값을 변경하는 대신 돌연변이 다시 계산 wonnt 있도록, 또한 BRANCH1을 바꾸는없이 branch2의 값을 변경하려면 그것. 그것은 본질적으로 도서관의 핵심입니다. 상태 변경의 다른 측면에 기반하여 불필요한 렌더링을 걱정하는 경우 shouldComponentUpdate 라이프 사이클 메소드를 사용하여 앱 상태 부분의 이 변경 될 때만 구성 요소가 업데이트되도록해야합니다. 그것은 새로운 대상입니다.

경우에 따라 변경 가능 맵에 setIn 메서드를 사용하는 것이 가장 좋습니다.

tree.setIn(['branch2', 1, 'value'], 'newValue');