[DAY - 85] Redux

2023. 7. 4. 19:58·🔥 부트캠프-웹 개발 🔥/React

지난 시간에 Reducer에 대해 간단히 알아보았는데 오늘은 Redux를 사용해 몇 가지 예제를 만들어 보았다.

context와 reducer 처럼 상태나 변수를 전역으로 관리할 때 사용하는데 Redux는 기본 내장되어 있는 기능이 아니라 라이브러리를 추가해 줘야 한다.

 

https://redux-toolkit.js.org/

 

Redux Toolkit | Redux Toolkit

The official, opinionated, batteries-included toolset for efficient Redux development

redux-toolkit.js.org

 

 

1) Redux 라이브러리 추가

 

Redux 추가

 

yarn 혹은 npm으로 redux 라이브러리를 추가해 준다.

 

2) Redux DevTools (크롬 확장) 추천 사항

 

https://chrome.google.com/webstore/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfibljd?hl=ko 

 

Redux DevTools

Redux DevTools for debugging application's state changes.

chrome.google.com

 

크롬에 위 확장을 설치하면 쉽게 눈으로 확인할 수 있다.

 

Redux DevTools
Redux DevTools

 

3) Redux 색상 변경 예제

 

import React from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { onRed, onGreen, onBlue } from '../../store/modules/colorSlice';

const Color = () => {
    const { color } = useSelector(state => state.color)

    const dispatch = useDispatch()
    return (
        <div>
            <h2 style={{ color: `${color}` }}>컬러 : {color}</h2>
            <p>
                <button onClick={() => dispatch(onRed())}>Red</button>
                <button onClick={() => dispatch(onGreen())}>Green</button>
                <button onClick={() => dispatch(onBlue())}>Blue</button>
            </p>
        </div>
    );
};

export default Color;

 

화면에 나타낼 컴포넌트인 Color.jsx에 받아올 변수와 함수를 작성한다.

 

import { createSlice } from '@reduxjs/toolkit'

const initialState = { color: 'orange' }

export const colorSlice = createSlice({
    name: 'color',
    initialState,
    reducers: {
        onRed(state) {
            state.color = 'red'
        },
        onGreen(state) {
            state.color = 'green'
        },
        onBlue(state) {
            state.color = 'blue'
        },
    }
})

export const { onRed, onGreen, onBlue } = colorSlice.actions

// 전부 내보내기
export default colorSlice.reducer

 

initalState로 color의 초기값을 orange로 설정하고, reducers 안에는 다른 컴포넌트에서 사용할 함수를 정의한다.

함수 속 state와 action은 현재값과 전달받은 값을 의미하는데, 현재 값은 state, 전달받은 값은 action.payload를 사용한다.

 

export const store = configureStore({
    reducer: {
        color
    }
})

 

configureStore함수가 들어있는 index.jsx를 작성하면 하위 컴포넌트에서 전역으로 사용 가능한 변수와 함수를 뿌려주게 된다.

'🔥 부트캠프-웹 개발 🔥/React' 카테고리의 다른 글
  • [DAY - 87] React 예제 Redux 사용 재구현
  • [DAY - 86] Redux 예제
  • [DAY - 84] context 예제, useReducer
  • [DAY - 83] context
Yeonhub
Yeonhub
✨ https://github.com/yeonhub 📧 lsy3237@gmail.com
  • Yeonhub
    비 전공자의 Be developer
    Yeonhub
  • 전체
    오늘
    어제
    • 전체보기 (169)
      • 🔍 Tech 🔍 (19)
        • Front-End (11)
        • Back-End (4)
        • AI (1)
        • Server (1)
        • Etc (2)
      • 💡 원티드 프리온보딩 챌린지 💡 (14)
        • PRE-ONBOARDING_AI (11월) (1)
        • PRE-ONBOARDING_FE (2월) (2)
        • PRE-ONBOARDING_FE (1월) (2)
        • PRE-ONBOARDING_FE (12월) (9)
      • 🔥 부트캠프-웹 개발 🔥 (118)
        • HTML5 (7)
        • CSS3 (21)
        • JavaScript (27)
        • JavaScript_advanced (9)
        • React (24)
        • Next (1)
        • MYSql (5)
        • Node (5)
        • 오늘하날(개인프로젝트) (12)
        • 이젠제주투어(팀프로젝트) (7)
      • 💻 CS 💻 (1)
        • 알고리즘 (1)
      • ⚡ 코딩테스트 ⚡ (11)
        • JavaScript (11)
      • 📚 Books 📚 (6)
        • 클린 아키텍처 (2)
        • 인사이드 자바스크립트 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    rn admob
    expo map
    Node
    node fcm
    expo deep linking
    라스콘
    bottom sheet
    expo google map
    react native admob
    node.js fcm
    react native firebase analytics
    expo fcm
    javascript fcm
    node cron
    expo 길찾기
    expo node fcm
    react native analytics
    rn bottom sheet
    expo fcm push
    php node
    react native expo fcm
    node crontab
    python node
    라스콘4
    react native bottom sheet
    expo 지도
    expo admob
    프론트엔드 테스트코드
    react vite
    컴파운드 컴포넌트 패턴
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Yeonhub
[DAY - 85] Redux
상단으로

티스토리툴바