ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Immutability (변경 불가성, 불변성) 이란?
    리액트 React 2020. 5. 17. 12:30

     

    Immutability 

    객체가 생성된 이후 그 상태를 변경하지않는, Immutable(이뮤터블) 하게 다루는 디자인 패턴이다.

    리액트에서는 시간적 비용이 어느정도 들더라도, 객체를 불변객체로 만들어 프로퍼티의 직접적인변경을 방지하고, 객체의 변경이 필요한 경우에는 새로운 객체로 복사하여 그 값을 다루도록 한다.

     

    특히 리액트에서는 상태(객체)를 참조 형태로 전달하고 전달받기 때문에, 참조를 통해 전달된 객체들이 예기치 않게 변경되었을때, 프로그램 전반적으로 큰 오류를 야기하는 가능성이 있다.

    변경이 이루어진 해당 객체를 구독하고있는 모든 컴포넌트와 로직에 영향을 끼친다. 

     

     

    객체, 상태의 불변성을 유지하며 객체를 합성하는 방법들 

      

    1) 스프레드 연산자 활용

    handleClick(){
    	this.setState(state => ({
        	info_list: [...state.info_list, 'my value...'];
        }));
    }

     

     

    2) Array.concat() 

    주어진 배열이나 값들을 기존 배열에 합성해서 새 배열을 반환한다.

    const my_array = old_array.concat(new_array);

     

     

    3) Object.assign() 

    두 객체를 하나의 객체로 합성 하여 새 객체를 반환한다.

    const old_obj = {a: 1, b: 2};
    const new_obj = {a: 3, c: 4};
    
    const my_obj = Object.assign(old_obj, new_obj);

     

     

    4) 깊게 중첩된 json array 의 경우 immutability-helper 등의 라이브러리를 통해 복사 권장

     

    '리액트 React' 카테고리의 다른 글

    SSR(Server-side rendering) 의 개념과 장단점  (0) 2020.06.06
    React Hooks (훅스) 정리  (0) 2020.05.28
Designed by Tistory.