Redux

이를 통해 애플리케이션의 상태를 중앙 집중식으로 관리하고, 상태의 변경을 예측 가능한 방식으로 처리할 수 있습니다.

https://react-redux.js.org

Store: Redux의 핵심이자 단일 소스 오브 진리입니다. 애플리케이션의 상태가 저장되는 곳이며, 상태를 변경하는 유일한 방법은 액션을 디스패치(dispatch)하여 스토어에 전달하는 것뿐입니다.

Action: 애플리케이션에서 일어나는 어떤 이벤트를 설명하는 객체입니다. 일반적으로 상태를 변경하기 위해 디스패치되며, 이를 통해 스토어에 데이터를 보낼 수 있습니다.

Reducer: 액션에 따라 상태를 변경하는 순수한 함수입니다. 현재 상태와 액션을 전달받아 새로운 상태를 반환합니다.

Dispatch: 액션을 스토어로 보내는 것을 말합니다. 이를 통해 상태를 변경할 수 있습니다.

Selector: 스토어의 상태에서 특정 데이터를 추출하는 함수입니다. Redux의 스토어는 단일 객체이므로, 복잡한 데이터 구조에서 필요한 부분만 선택하여 사용할 수 있도록 도와줍니다.

설치: React Redux를 설치합니다.

npm install react-redux

    스토어 생성: Redux 스토어를 생성합니다.

    import { createStore } from 'redux';
    import rootReducer from './reducers'; // 루트 리듀서
    
    const store = createStore(rootReducer);

    Provider 제공: 애플리케이션의 최상위 컴포넌트에 Redux 스토어를 제공합니다.

    import { Provider } from 'react-redux';
    import store from './store';
    
    ReactDOM.render(
      <Provider store={store}>
        <App />
      </Provider>,
      document.getElementById('root')
    );

    컨테이너 컴포넌트 생성: Redux와 연결된 컨테이너 컴포넌트를 생성합니다.

    import { connect } from 'react-redux';
    import { increment, decrement } from './actions';
    
    const Counter = ({ count, increment, decrement }) => (
      <div>
        <h1>Count: {count}</h1>
        <button onClick={increment}>Increment</button>
        <button onClick={decrement}>Decrement</button>
      </div>
    );
    
    const mapStateToProps = state => ({
      count: state.count
    });
    
    export default connect(mapStateToProps, { increment, decrement })(Counter);

    다음은 간단한 카운터 애플리케이션의 예제입니다.

    // actions.js
    export const increment = () => ({
      type: 'INCREMENT'
    });
    
    export const decrement = () => ({
      type: 'DECREMENT'
    });
    // reducers.js
    const initialState = {
      count: 0
    };
    
    const rootReducer = (state = initialState, action) => {
      switch (action.type) {
        case 'INCREMENT':
          return { count: state.count + 1 };
        case 'DECREMENT':
          return { count: state.count - 1 };
        default:
          return state;
      }
    };
    
    export default rootReducer;
    // app.js
    import React from 'react';
    import { Provider } from 'react-redux';
    import { createStore } from 'redux';
    import rootReducer from './reducers';
    import Counter from './Counter';
    
    const store = createStore(rootReducer);
    
    const App = () => (
      <Provider store={store}>
        <div>
          <h1>React Redux Counter Example</h1>
          <Counter />
        </div>
      </Provider>
    );
    
    export default App;

    이제 Redux를 사용하여 React 애플리케이션의 상태를 효과적으로 관리할 수 있습니다. 이 예제를 통해 React Redux의 기본 개념과 사용법을 이해할 수 있을 것입니다.

    Loading

    Leave a Reply

    Your email address will not be published. Required fields are marked *