React - Redux
React Redux
React
- Facebook이 만들고 사용 중
- View의 변화가 잦은 페이지에 적합
- 컴포넌트(UI) 기반
- 컴포넌트 재사용 용이
- user-interaction에 집중
- Virtual DOM(이전 Virtual DOM과 비교하면 바뀐 부분한 실제 DOM에 반영하는 방식)
- 단방향 DATA FLOW
Redux
Flux 패턴을 좀 더 쉽고 정돈된 형태로 사용할 수 있게 도와주는 라이브러리
Redux 연결
-
React Component의 최상위에 store 추가
import { createStore } from ‘redux’;
store = createStore(reducer);
-
<Provider>로 루트 컴포넌트 감싸기
import { createStore, applyMiddleware } from 'redux';
ReactDOM.render(
<Provider store={store}>
<Routes />
</Provider>,
document.getElementById('root')
);
-
Component와 Store 연결 -
connect()이용
import { connect } from ‘react-redux’;
const mapStateToProps = (state) => ({
myState: state.myState,
…
});
const mapDispatchToProps = (dispatch) => ({
yourReducerFunction(index) {
dispatch(yourReducerFunction(index));
},
…
});
export default connect(mapStateToProps, mapDispatchToProps)(YourComponent);
Middleware란?
- Action을 보내는 순간부터 Store에 도착하는 순간까지 사이에 thirdParty 확장을 사용할 수 있는 지점을 제공
- 객체 대신 함수를 생성하는 액션 생성함수를 작성할수 있도록 도와줌
- Action과 Reducer 사이의 중간자
- 리듀서가 액션을 처리하기전에, 미들웨어가 할 수있는 작업들은 여러가지가 있는데… 단순히 전달받은 액션을 콘솔에 기록을 할 수도 있고, 전달받은 액션에 기반하여 액션을 아예 취소시켜버리거나, 다른 종류의 액션들을 추가적으로 디스패치 할 수도 있음
- Store를 생성할 때 설정을 함
Redux applyMiddleware()란?
- redux 모듈 안에 들어있는 Middleware
redux-thunk
- 비동기 작업을 처리하기 위한 미들웨어
- 객체 대신 함수를 생성하는 액션 생성함수를 작성 할 수 있게 해줌
Middleware 적용
const store = createStore(modules, applyMiddleware(reduxThunk, ReduxThunk))
함수들을 비동기적으로 수정
export const test = () => dispatch => {
setTimeout(
() => { dispatch(decrement()) },
1000
);
}
export default connect(
(state) => ({
myState: state.myState
}),
(dispatch) => ({
myAction: bindActionCreators(counterActions, dispatch)
})
)(YourComponent);
댓글
댓글 쓰기