> Frontend/React

TIL-2024.07.11 - React - redux 기초

Janku 2024. 7. 11. 12:24

 

 

 

 

 

 

목표

- redux 기본 사용법

 

 

기본 사용법

 

1. store.js 설정

import {createStore} from 'redux';

const counterReducer = (state = {counter: 0}, action) => {
    if(action.type === 'increment') {return {counter: state.counter+1}}
    else if(action.type === 'decrement') {return {counter: state.counter - 1}}
    return state;
};

const store = createStore(counterReducer);

export default store;

 

 

 

2. 사용할 component에 적용 

import classes from './Counter.module.css';
import {useSelector, useDispatch} from "react-redux";

const Counter = () => {
  const toggleCounterHandler = () => {};
    const {counter} = useSelector(state => state); // redux store 의 state 조회하며, 변화를 감지하는 hook
    const dispatch = useDispatch();
    const toggleCounterHandler = () => {

    };

    const increment = () => {dispatch({type: 'increment'})}
    const decrement = () =>  {dispatch({type: 'decrement'})}

    return (
        <main className={classes.counter}>
            <h1>Redux Counter</h1>
            <div className={classes.value}>{counter}</div>
            <div>
                <button onClick={increment}>increment</button>
                <button onClick={decrement}>decrement</button>
            </div>
            <button onClick={toggleCounterHandler}>Toggle Counter</button>
        </main>
    );
};

export default Counter;

 

 

 

3. 최상위 root (index.js) 설정

import React from 'react';
import ReactDOM from 'react-dom/client';

import {Provider} from "react-redux";
import './index.css';
import App from './App';
import store from "./store";

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<Provider store={store}><App/></Provider>);