1) Promise.all => api를 묶어주는 역활
const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise(resolve, reject) =>{
setTimeout(resoleve, 100, 'foo');
});
Promise.all([promise1, promise2, promise3]).then((values) => {
console.log(values);
})
결과: Array [3,42,"foo]
2) SPA란?
- 웹페이지가 리로드 하지 않고 사용자가 상호작용하는 컴포넌트들만 동적으로 업데이트 한다.
장점
- 사용자 경험이 좋다.
- 초기 렌더링 후 사용자경험이 좋다 => 렌더링이 빠르다.
단점
- 초기 렌더링 시간이 오래걸린다.
- 검색엔진에 비교적 취약하다 => 페이지가 하나이기 때문에
3) MPA란?
장점
- 각페이지가 별도의 URL을 가지므로 검색엔진에 최적화 되어있다.
- 서버 중심 로직 대부분 처리가 서버에서 처리하여 초기 렌더링 시간이 빠르다.
- SPA와 비교하여 자료가 많다.
단점
- 사용자가 다른페이지로 이동할때마다 페이지가 리로드한다.
- SPA에 비해 페이지 별로 디자인과 기능을 다르게 해야해서 개발이 복잡하다.
- 새로운 페이지를 이동하면 화면이 깜빡이고 새로운 페이지를 요청 할때마다 페이지를 다시 렌더링 하기 때문에 사용자 경험이 좋지 않다.
4) state란?
- state는 컴포넌트 내부에서 관리되는 데이터, 생명주기에 따라 변할 수 있으며 변화에 따라 리렌더링이 된다.
용도: 사용자의 입력, 서버응답시간 경과에 의해 변경되는 데이터를 저장
☘️ 리렌더링의 조건
1. 컴포넌트의 state가 변경되었을 때
=> setState 함수를 호출 하거나 ,state를 직접 수정하는 경우 발생
2. 컴포넌트가 내려받은 props가 변경되었을 때
=> 부모 컴포넌트에서 전달된 props가 변경되면 해당 컴포넌트가 리렌더링됨
3.부모 컴포넌트가 리렌더링되는 경우
=> 부모 컴포넌트가 리렌더링되는 경우 해당 부모컴포넌트에 속한 모든 자식 컴포넌트들은 리렌더링됨
5) Props
- 속성전달: 단방향데이터전달 (부모에서 자식)
특징: Props는 읽기 전용이므로 변경이 불가능하다 매개변수와의 용도가 다르다.
6) props drilling
- 부모에서 자식으로 게속해서 넘어감에 따라 너무 딮하게 넘어가는 현상
7) 불변성의 뜻과 중요성
- 데이터가 생성하고 변경 불가, 데이터를 수정할때 직접변경 x, 새로운 복사본을 만들어 복사한다, 즉 객체나 배열은 불변성을 유지하기 위하여 새로운 객체나 배열을 생성해야한다.
사용 예) 객체의 경우 스프레드 연산자로 {...object}를 사용하여 기존의 배열을 변경하지 않고 생성해야함
8) 명령형 프로그래밍
정의: 컴퓨터가 수행하는 절차를 관여하여 코드작성
장점: 직관적이고 구체적이다.
단점: 복잡해질때 관리가 힘들다.
9) 선언형 프로그래밍
정의: 각 함수를 호출시켜 코드가 알아서 절차를 화면에 수행해준다.
장점: 관리가 상대적으로 쉽다.
단점: 호출하는 함수에 따라 잘못작동될 경우가 생긴다.