렌더링 프로세스
1. 초기props/state로 render 메소드 실행
2. 외부에서 데이터 받음 (ex. AJAX)
3. 전달 받은 컴포넌트에서 setState 메소드 실행
• 내부 트리거에 의해 render 메소드 자동 실행
4. 기존 대비 바뀌는 부분만 렌더링
• virtual DOM 내부적으로 판단
5
6.
문제점1
• 부모에서 setState메소드를 실행할 경우
• 딸려있는 모든 자식의 render 메소드가 실행
• 결과적으로 바뀌든 바뀌지 않든 실행
• virtual DOM에서 판단하는 과정이 성능에 영향
6
7.
shouldComponentUpdate
• 컴포넌트의 업데이트가능성을 미리 알려주는 메소드
• 기본 값은 true
• 만약 false일 경우 아래의 메소드는 실행 X
• componentWillUpdate
• render
• componentDidUpdate
7
가변객체
• 자바스크립트의 Object는생성 후, 변경 가능
• ES5 이하: Array, Object, etc
• ES6 이상: Array, Object, Map, Set, etc
var testStr = "str";
testStr.substr(0, 1); // “s"
console.log(testStr); // "str"
var testArr = ["a", "r", "r"];
testArr.pop(); // "r"
console.log(testArr); // ["a", "r"]
• 참조를 공유하는 모든 곳에 부작용 발생
11
12.
Immutable.js
• 페이스북에서 만든라이브러리
• 리액트와의 의존성 없음
• 어느 곳에서나 사용 가능
• 원본 객체는 수정되지 않는다는 컨셉
• 새로운 객체 생성
• 다양한 자료구조
• List, Stack, Map, OrderedMap, Set, OrderedSet, Record 등
12