Today I Learned
매일 배운 것을 정리하며 기록합니다. Redux 공부하였습니다.
Redux
- 리액트 상태 관리 라이브러리
- 컴포넌트의 상태 업데이트 관련 로직을 다른 파일로 분리시켜서 효율적으로 관리
- 컴포넌트끼리 똑같은 상태를 공유할 때 여러 컴포넌트를 거치지 않고 전달하거나 업데이트 가능
- 미들웨어 기능을 통해 비동기 작업을 효율적으로 관리
(개인적인 생각입니다만 네이밍이 리덕스인 이유는 리덕스를 사용하면 상태 관리를 컴포넌트 외부에서 하니까(프레젠테이세녈 컴포넌트/컨테이너 컴포넌트) '외부에서 돌아온' 이런 의미에서 redux라는 이름이 붙여진게 아닐까? 생각해봅니다.)
액션(action)
- 상태에 어떤 변화가 필요하면 발생하는 객체
- type 필드를 반드시 갖음
액션 생성 함수(action creator)
- 액션 객체를 만들어 주는 함수
- 변화를 일으킬 때 마다 액션 객체를 만드는 번거로움을 해결
리듀서(reducer)
- 변화를 일으키는 함수
- 현재 상태와 액션 객체를 인자로 받아, 두 값을 참고하여 새로운 상태를 만들어서 반환
스토어(store)
- 리덕스를 적용하기 위해 사용
- 한 개의 프로젝트에는 하나의 스토어만 존재
- 스토어 안에는 상태, 리듀서, 디스패치(dispatch), 구독(subscribe) 등 중요한 내장 함수를 지님
디스패치(dispatch)
- 액션을 발생시키는 함수
- dispatch(action)과 같은 형태로 액션 객체를 파라미터로 넣어서 호출
- 디스패치가 호출되면 스토어는 리듀서 함수를 실행시켜서 새로운 상태를 만듦
- dispatch(action) -> reducer(state, action) -> new state
Reference : 김민준(VELOPERT), 『리액트를 다루는 기술』, 길벗 (2019), p414-416.