- Published on
React컴포넌트에 redux연결하기
전체 App의 container 컴포넌트 구현
- 전체 App의 최상위 container 컴포넌트에서 store의 변경 이벤트를 구독하고, 하위 컴포넌트에 데이터를 전달한다.
import React, { Component } from 'react';
import { bindActionCreators } from 'redux';
import Header from './Header';
import MainSection from './MainSection';
import * as TodoActions from '../actions/todos';
import todoStore from '../store/todoStore';
var actions = bindActionCreators(TodoActions, todoStore.dispatch);
class TodoApp extends Component {
constructor (props, context) {
super(props, context);
todoStore.subscribe(this._onChange.bind(this));
}
_onChange() {
this.forceUpdate();
}
render() {
return {
<div>
<Header addTodo={actions.addTodo} />
<MainSection todos={todoStore.getState()} actions={actions} />
</div>
};
}
}
- store가 변경될때 마다 forceUpdate를 실행하여 변경된 스토어 상태를 화면에 반영한다.
- 화면에 업데이트 방법으로 react-redux패키지에서 shouldComponentUpdate()를 사용하는 방법도 있다.
- Redux에서 제공하는 bindActionCreators 메서드를 사용하면 스토어의 dispath와 액션생성자를 바인딩하여 액션을 생성한 후 자동으로 디스패처에 전달해준다.