React/redux

[redux] 리덕스 라이브러리 - 스토어 간편하게 사용하기

Judith Hopps 2023. 3. 17. 15:15
반응형

리덕스 라이브러리란?

1. 상태를 체계적으로 관리할 수 있다.

                                >> 프로젝트 규모가 클 때 적합하다.

 

2. 개발자 도구 지원해준다.

 

3. 미들웨어를 지원해준다.

                                >> 비동기 작업이 용이하다.

 

 

 

react-redux 사용하기

 

 

방법 1. 임시함수를 생성한다.

 

import React from 'react';
import Counter from '../components/Counter';
import { connect } from 'react-redux';
import { increase, decrease } from '../modules/counter';



const CounterContainer = ({number,increase,decrease}) => {
    return (
        <div>
          <Counter number={number} onIncrease ={increase} onDecrease={decrease} />  
        </div>
    );
};

const mapStateToProps = state => ({
    number : state.counter.number
})

const mapDispatchToProps = dispatch => ({
    increase : () => {
        dispatch(increase())
    },
    decrease : () => {
        dispatch(decrease())
    }
});

export default connect ( 
    mapStateToProps,
    mapDispatchToProps,
)(CounterContainer);

 

 

mapStateToProps,
    mapDispatchToProps 생성함!

 

 

방법 2. connect 함수 안에서 미리 내장함수 선언한다.

 

import React from 'react';
import Counter from '../components/Counter';
import { connect } from 'react-redux';
import { increase, decrease } from '../modules/counter';



const CounterContainer = ({number,increase,decrease}) => {
    return (
        <div>
          <Counter number={number} onIncrease ={increase} onDecrease={decrease} />  
        </div>
    );
};




export default connect ( 
    state => ({
        number : state.counter.number,
    }),
    dispatch => ({
        increase : () => {
            dispatch(increase())
        },
        decrease : () => {
            dispatch(decrease())
        }
    }),
)(CounterContainer);
const mapDispatchToProps = dispatch => ({
    increase : () => {
        dispatch(increase())
    },
    decrease : () => {
        dispatch(decrease())
    }
});

 

방법 3. bindActionCreators 유틸 함수 사용

import React from 'react';
import { bindActionCreators } from 'redux';
import Counter from '../components/Counter';
import { connect } from 'react-redux';
import { increase, decrease } from '../modules/counter';



const CounterContainer = ({number,increase,decrease}) => {
    return (
        <div>
          <Counter number={number} onIncrease ={increase} onDecrease={decrease} />  
        </div>
    );
};



export default connect ( 
    state => ({
        number : state.counter.number
    }),
    dispatch => 
        bindActionCreators(
            {increase,decrease},
            dispatch,
        )
    
)(CounterContainer);

 

 

 

export default connect (
    state => ({
        number : state.counter.number
    }),
    dispatch =>
        bindActionCreators(
            {increase,decrease},
            dispatch,
        )
   
)(CounterContainer);

 

 

방법 4. 액션 생성 함수로 이루어진 객체 형태로 넣기

두 번째 파라미터를 아예 객체 형태로 넣어 주면 

connect 함수가 내부적으로 bindActionCreators 작업을 대신한다.

 

 

import React from 'react';
import Counter from '../components/Counter';
import { connect } from 'react-redux';
import { increase, decrease } from '../modules/counter';



const CounterContainer = ({number,increase,decrease}) => {
    return (
        <div>
          <Counter number={number} onIncrease ={increase} onDecrease={decrease} />  
        </div>
    );
};



export default connect ( 
    state => ({
        number : state.counter.number
    }),
    {
        increase,
        decrease,    }
    
)(CounterContainer);

redux devTools로 state 확인

export default connect (
    state => ({
        number : state.counter.number
    }),
    {
        increase,
        decrease,    }
   
)(CounterContainer);
반응형