Redux란
- 가장 사용률이 높은 상태 관리 라이브러리
- 컴포넌트들의 상태 관련 로직들을 다른 파일로 분리시켜서 더욱 효율적으로 관리 가능
- 컴포넌트끼리 상태를 공유할 때 여러 컴포넌트를 거치지 않고도 손쉽게 상태 값을 전달 할 수 있다.
- 상태변화 로직이 들어있는 스토오를 통하여, 우리가 원하는 컴포넌트에 원하는 상태값과 함수를 직접 주입할 수 있다.
Redux에서 자주 사용되는 개념 정리
액션
1 2 3 4 5 6 7 | { type : "ADD_TODO", data : { id : 0, text : "리덕스 배우기" } } | cs |
- 상태에 어떠한 변화가 필요하게 될 때 액션이라는 것을 발생시킨다.
- 하나의 객체로 표현하며 액션 객체에는 type필드는 필수로 들어가야한다.
- 그 외 data는 사용자 마음대로 조정이 가능하다.
액션 생성함수 (Action Creator)
1 2 3 4 5 6 | export const addTodo = (data) => { return { type: "ADD_TODO", data }; } | cs |
- 액션을 만드는 함수다.
- 파라미터를 받아와 액션 객체 형태로 만들어주는 책임이 있다.
- 액션 생성함수를 통해 액션을 생성하는 이유는 따로 있다.
- 나중에 컴포넌트에서 더욱 쉽게 액션을 발생시키기 위해서다.
- 때문에 보통 함수 앞에 export 키워드를 통해 다른 파일에서 불러와서 사용한다.
- 액션 생성함수는 필수적으로 구현요소가 아니다.
- 액션을 발생 시킬 때 마다 직접 액션 객체를 작성해도 괜찮다.
Reducer
1 2 3 4 5 6 7 8 | function addTodo(state, action) { switch (action.type) { case 'ADD_TODO' : return state.concat(action.todo); default : return state; } } | cs |
- 리듀서는 state의 변화시키는 역할을 한다.
- 2가지 파라미터를 받는다.
- 첫번째를 파라미터는 현재 state값, 두번째 파라미터는 변화를 시키고자 하는 액션 객체
- 이 2가지 파라미터를 받아 새로운 state를 만든다.
- 리덕서 리듀서에서는 default문에서는 기존 state를 반환하도록 작성한다.
- 리덕스를 사용할 때 여러개의 리듀서를 만들고 이를 하나의 루트 리듀서(Root Reducer)로 만들 수 있다.
Store
- 리덕스에서 한 애플리케이션에 하나의 스토어를 만들게 된다.
- 스토어 안에는 현재 앱 상태, 리듀서가 들어있다.
- 내장 함수도 포함되어 있다.
Dispatch
- 디스패치는 스토어의 내장함수 중 하나다.
- 디스패치는 액션을 발생 시키는 역할을 한다.
- dispatch 함수에 액션을 파라미터로 전달한다.
- 디스패치 함수를 호출하게 되면 스토어는 리듀서 함수를 실행시킨다.
- 해당 액션을 처리하는 로직이 있다면 액션을 참고하여 새로운 상태를 만들어준다.
Subscribe
- 스토어의 내장함수다.
- 함수 형태의 값을 파라미터로 받는다.
- 액션이 디스패치 되었을 때 마다 전달해준 함수가 호출된다.
'react' 카테고리의 다른 글
[React] 흔하디 흔한 투두리스트 아니고 로그인 - 2 (0) | 2020.05.19 |
---|---|
[React] 흔하디 흔한 투두리스트 아니고 로그인 - 1 (0) | 2020.05.19 |