Action Creator
(1) Action Creator 만들기
액션객체를 한 곳에서 관리할 수 있도록 “함수"와 액션 value를 상수로 만들어보자.
PLUS_ONE 이라는 액션 객체를 만드는 함수를 만든다면 아래와 같이 만들 수 있는데, 우리는 이것을 Action Creator라고 부른다.
말 그대로 액션을 만드는 생성자 인 것.
// src/redux/modules/counter.js
const PLUS_ONE = "PLUS_ONE"; // value는 상수로 생성
// 액션객체를 반환하는 함수 생성
// export 가 붙는 이유는 plusOne()는 밖으로 나가서 사용될 예정이기 때문입니다.
export const plusOne = () => {
return {
type: PLUS_ONE, // type에는 위에서 만든 상수로 사용 (vscode에서 자동완성 지원)
};
};
액션의 value는 상수로 따로 만들어주고, 그것을 이용해서 액션객체를 반환하는 함수를 작성한다.
이것을 실제로 리듀서와 컴포넌트에서는 아래와 같이 작성한다.
// src/modules/counter.js
// 추가된 코드 👇 - 액션 value를 상수들로 만들어 줍니다. 보통 이렇게 한곳에 모여있습니다.
const PLUS_ONE = "PLUS_ONE";
const MINUS_ONE = "MINUS_ONE";
// 추가된 코드 👇 - Action Creator를 만들어 줍니다.
export const plusOne = () => {
return {
type: PLUS_ONE,
};
};
export const minusOne = () => {
return {
type: MINUS_ONE,
};
};
// 초기 상태값
const initialState = {
number: 0,
};
// 리듀서
const counter = (state = initialState, action) => {
switch (action.type) {
case PLUS_ONE: // case에서도 문자열이 아닌, 위에서 선언한 상수를 넣어줍니다.
return {
number: state.number + 1,
};
case MINUS_ONE: // case에서도 문자열이 아닌, 위에서 선언한 상수를 넣어줍니다.
return {
number: state.number - 1,
};
default:
return state;
}
};
export default counter;
(2) Action Creator 사용하기
- export된 Action Creator import 하기
- dispatch()에 있던 액션객체를 지우고, Action creator 넣기
// src/App.js
import React from "react";
import { useDispatch, useSelector } from "react-redux";
// 사용할 Action creator를 import 합니다.
import { minusOne, plusOne } from "./redux/modules/counter";
const App = () => {
const dispatch = useDispatch();
const number = useSelector((state) => state.counter.number);
return (
<div>
{number}
<button
onClick={() => {
dispatch(plusOne()); // 액션객체를 Action creator로 변경합니다.
}}
>
+ 1
</button>
{/* 빼기 버튼 추가 */}
<button
onClick={() => {
dispatch(minusOne()); // 액션객체를 Action creator로 변경합니다.
}}
>
- 1
</button>
</div>
);
};
export default App;
왜 Action creator를 사용해야 하나?
(1) 휴먼에러 (오타) 방지
액션객체의 type value를 상수로 만들어놓았기 때문에, 개발툴에서 자동완성 등의 보조 기능을 지원받을 수 있다.
(2) 유지보수의 효율성 증가
Action Creator가 만약 100군데에서 쓰이고 있는 상태에서 혹여나 그것을 바꾸어야 하는 상황이 오더라도 단 한번의 수정으로 100군데의 모든 수정사항을 반영할 수 있다.
(3) 코드 가독성
모듈 파일에서 Action Creator가 일목요연하게 정리가 되어있으면, 내가 아닌 다른 개발자가 보았을 때 해당 모듈이 가지고 있는 모든 Action들을 한눈에 알 수 있게 된다. 즉 그 자체가 Action 들의 리스트업을 해주는 역할을 하게 되는 것.
정리
- 액션객체를 만드는 함수를 Action Creator(액션 크리에이터)라고 한다.
- Action Creator는 모듈 파일안에서 생성된다.
- 액션객체의 type value로 상수로 생성해서 관리한다.
- Action Creator를 사용하면, 여러가지 문제점을 해소할 수 있다.
'웹개발 > react' 카테고리의 다른 글
React Router Dom , hooks (2) | 2024.02.06 |
---|---|
[React] Redux - Payload 및 Ducks 패턴 (0) | 2024.02.03 |
[React] Redux - 카운터 프로그램 만들기2 (0) | 2024.01.31 |
[React] useRef란? useState와의 차이 (0) | 2024.01.31 |
[React] Redux + 설정 카운터 프로그램 만들기 (1) | 2024.01.29 |