라벨이 redux인 게시물 표시

Redux-Saga effects(이팩트) 정리

이미지
delay 설정된 시간 이후에 resolve하는 Promise객체를 반환한다. put 특정 액션을 dispatch하도록 한다. take 1회만 실행하고 이벤트 삭제   takeEvery 들어오는 모든 액션에 대해 특정 작업을 1번만 처리해 준다. 이벤트 계속 유지   takeLatest 기존에 진행 중이던 작업이 있다면 취소 처리하고 가장 마지막으로 실행된 작업만 수행한다. 또는 동시에 들어오는 여러 요청들 중 마지막에 호출된 작업만 수행한다. 클릭을 연달아 3번 했을때 앞에 두번의 이벤트는 무시하고 마지막 이벤트만 실행한다.  이미 완료된 경우에는 실행하지만 세번 클릭 중 앞의 두번의 클릭이 pending 상태인 경우 마지막 요청만 실행한다. * 프론트 단에서 연달아 2번 클릭하여 요청을 2번 보내게 되면 백엔드 단에서 response는 한번 보내지만 백엔드 단에는 2번 요청이 갔으므로 정보가 2개(중복) 저장될 수 있다. * 두번째 인자로 들어온 콜백함수는 제너레이터 함수가 아닌 일반 함수로 작성해야 한다!! throttle 일정시간이 지날때까지 추가적인 요청을 수행하지 않는다. 함수가 호출된 후 지정해둔 시간동안 함수를 호출하더라도 실행하지 않는다. takeLatest의 문제점을 해결 가능. debounce 동일한 함수가 연속해서 호출될 때 첫번째 또는 마지막 호출만 실행하는 기능 * debounce와 throttle의 차이점 throttle은 지정한 시간마다 정기적으로 기능 실행을 보장한다. 반면에 debounce는 수많은 이벤트가 발생해도 모두 무시하고 특정 시간 사이에 어떤 이벤트도 발생하지 않은 경우에만 딱 한번만 마지막 이벤트를 발생시키는 기법이다.  그러므로 지정한 ms(초)가 지나기 전에 계속 이벤트가 발생할 경우 콜백에 반응하는 이벤트는 발생하지 않고 계속 무시된다. call 동기 함수 호출(api 호출 후 return까지 대기), fork는 비동기 함수 호출(기다리지 않고 return 다음으로 이동) * api 통신할때는 무조건 call을

Redux(리덕스)

이미지
Redux는 상태관리 라이브러리이다. Redux를 사용하면 리액트에서 단방향 데이터 데이터 통신에서 발생되는 단점을 극복할 수 있다. Redux는 요즘 가장 인기있는 React 뿐만 아니라 다양한 framework에서도 사용할 수 있다. 즉, React에서만 사용가능한 라이브러리가 아니다. react redux store redux에서는 한 애플리케이션 당 하나의 스토어를 만들게 된다. 스토어 내부에는 현재 앱의 상태와 무엇이 일어날지 작성하는 action, 그리고 action의 type에 따라 상태를 수정하는 reducer가 존재한다. action 상태에 변화가 필요할때 액션을 사용한다. 상태 저장소인 store에 데이터를 보내는 방법이다. 새로운 상태 값을 dispatch를 통해 전달한다.  action 객체에는 type 필드를 필수적으로 가지고 있어야하며 그외의 값은 자유롭게 작성할 수 있다. action에 작성하는 type은 문자열 상수로 정의하며 중복되면 안된다. action creater 액션 생성함수라고하며 액션을 만드는 함수이다. 파라미터를 받아와서 액션 객체 형태를 만들어준다. reducer state 값을 초기화, 수정할때 사용한다. 즉, reducer는 변화를 일으키는 함수이다. reducer는 두가지의 파라미터로 state와 action을 받아 온다.  action을 통해 어떠한 행동을 정의하면 그 결과 상태를 초기화, 수정하는 함수이다. 일반적으로 매개변수로 기존의 state값과 새로운 action값을 받아 새로운 상태를 만들어서 반환한다. dispatch dispatch는 store의 내장함수 중 하나이며 action을 발생시키는 함수이다. 값을 초기화, 수정할때 사용하는 reducer 함수에 action 값으로 들어갈 새로운 상태 값을 전달하는 메서드이다.  dispatch(action) 과 같이 dispatch 함수에 액션을 파라미터로 전달한다. subscribe store의 상태가 변경 될 때마다 render 함수를 호출해줘