글쓰는쿼카의 PM 여정
[Redux] Action Values, Action Creators 본문
#스파르타코딩클럽 #내일배움캠프(프론트엔드_React)
학습주제: React Redux
학습내용: Redux Setting 2. 모듈, 모듈의 구성요소, 스토어와 모듈 연결 확인(useSelector)
학습일: 2024. 6. 4.
1. Action Values (액션 벨류)
//액션 value를 상수들로 만들기
const PLUS_ONE = "PLUS_ONE";
const MINUS_ONE = "MINUS_ONE";
2. Action Creators (액션 생성자)
// Action Creator를 만들기
export const plusOne = () => {
return {
type: PLUS_ONE,
};
};
export const minusOne = () => {
return {
type: MINUS_ONE,
};
};
3. action values와 action creators를 활용 - 예시: counter +1, -1
- 리듀서 전체 코드
// 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;
- App 전체 코드
// 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;
'개발 > React' 카테고리의 다른 글
[팀프로젝트] 게시글 CRUD 구현 (2024. 6. 6.) (0) | 2024.06.10 |
---|---|
uuid 설치 (0) | 2024.06.05 |
🌐Redux 3 - Action Creators, Payload, Ducks 패턴 (0) | 2024.06.04 |
🌐Redux 2. dispatch, action객체 (0) | 2024.06.04 |
🌐Redux 1 - 소개, 설치, 설정, useSelector (1) | 2024.06.04 |