[React] Redux 기본셋팅

JIOO·2022년 6월 8일
0

React

목록 보기
2/19
post-thumbnail

리덕스 시작하기

✔ 리덕스 설치파일

npm install
  1. redux
  2. react-redux
  3. redux-logger

✔ 리덕스에서 사용 할 파일들

App.js
index.js
reducer.js (생성)

✔ 리덕스 사전 설정

import

import { Provider } from "react-redux";
import { createStore, applyMiddleware } from "redux";
import Reducer from "./module/Reducer";

import Logger "redux-logger";
// redux가 움직일 때 로그를 찍어주는 미들웨어

환경설정

const store = createStore(Reducer,applyMiddleware(Logger));
// 리덕스의 액션이 최종적으로 도달하는 곳
(생성한 reducer 넣어주고, 뒤에 미들웨어 넣는 순서)

index.js의 <App />부분에 Provider 감싸주기
<Provider store={store}>
<App />
</Provider>

기본셋팅

	1. initialState 만들기 
    2. 액션타입 설정
    3. 액션 생성함수 만들기
    4. 리듀서 생성

✍ 예제

📋 Reducer.js

1. initialState 만들기

const initialState = {number : 0, ···}
//상태의 기본값을 설정하는 것

2. 액션타입 설정

const SET_DIFF = "SET_DIFF";
const INCREASE = "INCREASE";
const DECREASE = "DECREASE";
// 액션을 했을 때 어떤 타입의 액션이 움직이는 지 네이밍 해주는 것 (웬만하면 같이?)

3. 액션 생성함수 생성

export const setDiff = (parameter) => ({ type: SET_DIFF, parameter });
//파라미터를 넣은 타입의 생성함수
<br>
export const increase = () => ({ type: INCREASE });
export const decrease = () => ({ type: DECREASE });
//파라미터를 안넣은 타입의 생성함수
<br>
다른 파일에서 액션 생성함수를 사용 할 수 있게 export 처리 해주기

4. 리듀서 생성

export default function counter(state = initialState, action) {
  switch (action.type) {
    case SET_DIFF:
      return {
        number: parseInt(state.number + action.diff)
      };
    case INCREASE:
      return {
        number: state.number + 1
      };
    case DECREASE:
      return {
        number: state.number - 1
      };
    default:
      return state;
  }
  // default : return state 를 필수로 넣어야함 아니면 에러뜸 
  (액션을 실행 했는데 아무 타입도 아니면 초기 지정값을 실행 한다는 뜻)
  <br>
  //initialState의 값을 불러올 땐 state.불러올 변수
  <br>
  //만약 initialState에 값이 2개 이상 일 때 
  const initialState = {number : 0, string:""}
  <br>
  case 타입 : 
   return {
    ...state, // initialState는 하나 이상일 때 바꾸면 안되고 불변성을 위해 복사해 와서 사용
    바꿀 변수 : 값
   }
}

📖 오늘의 결론

리덕스 사용 루틴을 익히자

1. initialState 만들기 
2. 액션타입 설정
3. 액션 생성함수 만들기
4. 리듀서 생성
profile
프론트엔드가 좋은 웹쟁이 with Notion (요즘은 노션과 병행 중)

0개의 댓글