피로누적과....회사 업무로 인하여
이론 공부로 마무리 ~
리덕스 사가 사용하는 이유
redux의 함수는 무조건 동기적으로 데이터가 흘러간다.
웹은 언제나 비동기로 사용자 경험을 높이는 것이 중요합니다.
redux을 사용하면서 redux-saga도 동시에 사용함으로 비동기의 유연함도 같이 가져갈 수 있습니다.
diapatch를 여러번 할 경우 컴포넌트 파일에서 dispatch로직을 2번 써야하니 불편하기도 합니다.
리덕스 필수 지식
제네레이터
const gen = function* () {
console.log(1);
yield;
console.log(2);
yield;
console.log(3);
yield;
console.log(4)
}
const gener = gen();
// gener() - gener{<suspended>}
gener().next() -> 1
gener().next() -> 2
gener().next() -> 3
gener().next() -> 4
gener().next() -> undifined
all
은 배열을 받고, 받은 이펙트를 등록 (실행 아님, 등록임!!)fork
는 함수를 실행call
은 동기함수호출 (api가 리턴할때까지 기다림), fork
은 비동기함수 호출 (안기다리고 리턴 다음꺼 이동)call
(yield가 await과 비슷)take
-> 한번만 실행되고 이벤트 삭제됨takeEvery
-> 한번 실행되도, 이벤트 계속 리슨takeLatest
-> 클릭 실수로 2번 했을때, 앞 이벤트 무시 마지막 이벤트 실행(보통 이거 많이씀)throttle
: 초 이내에 req를 1번만 - 이거 많이써야겠네 - 스크롤 (마지막 함수가 호출된 후 일정 시간이 지나기전 재호출 안함)debounce
: 검색 결과 - 초 이내에 req를 1번만 (연이어 호출되는 함수들 중 마지막 함수 or 가장 처음 함수만 호출)takeLeading
: 첫번째 이벤트만 실행, 뒤에꺼 무시내일 할일