react

react-redux

최성헌 2018. 9. 3. 14:01

## 설치 라이브러리

$ yarn add redux react-redux redux-actions



## 필수 셋팅

redux를 사용할 최상위 컴포넌트에 Provider를 이용해 store를 주입해야 한다.

import { Provider } from 'react-redux';
<Provider store={store}>
<div>
Redux App
</div>
</Provider>



## Actions 셋팅

import { createAction } from 'redux-actions'
export const addText = createAction(TYPE_ADD);

위에 선언한 actions인 addText를 호출할 때 파라미터를 입력하게 되면 다음과 같은 데이터 구조로 reducer에 전달된다.

addText({text: 'abc', color: '#fff'});
/* 결과:
{
type: 'TYPE_ADD',
payload: {
text: 'abc',
color: '#fff'
}
}
*/



## Reducer 셋팅

redux-actions의 handleActions를 이용하여 생성

import { handleActions } from 'redux-actions'
export const textAdd = handleActions({
[TYPE_ADD]: (state, action) => {
return state.update('textList', arr => arr.push(action.text));
}
}, initState);

TYPE_ADD : action 명

initState : 초기 상태값




## Store 셋팅

여려개의 Reducer를 한개로 묶을 수 있는 combineReducers를 이용한다.

import { createStore, combineReducers } from 'redux'
import { textAdd, sample } from "./reducer";

const rootReducer = combineReducers({
textAdd, sample
});

export const store = createStore(rootReducer);



## Component 연결

import { connect } from 'react-redux'

connect (props객체, dispatch 연결 객체)(component) 형태로 구성.

예제

Component = connect(
(state) => {
return {
text: state.text
}
},
(dispatch) => {
return {
addText: dispatch(addText('abc'))
}
}
)(Component);
export default Component;