REDUX

프로젝트 준비

프로젝트 구조 설정

무슨 프로젝트?

숫자 카운터

뷰에 보여지는건?

숫자, 그리고 버튼 3개

버튼1: 값 1씩 증가
버튼2: 값 1씩 감소
버튼3: 배경화면 색상 랜덤화

필요한 컴포넌트?

Value.js
Control.js
Counter.js

Value.js
Control.js
Counter.js

얘네 멍청이 (Dumb Component)

얘는 똑똑함. (Smart Component)

ACTION

= 작업에 대한 정보

를 지니고있는 객체

우리 프로젝트에 필요한 액션은?

1. 값을 증가시키기
2. 값을 감소시키기
3. 새로운 색상 설정하기

이름을 만들어요
대문자_ 으로

1. INCREMENT
2. DECREMENT
3. SET_COLOR

actions/ActionTypes.js

{ type: "INCREMENT" }

{ type: "DECREMENT" }

{
    type: "SET_COLOR",
    color: [ 200, 200, 200 ]   
}

actions/index.js

REDUCER

변화를 일으키는 함수

순수해야함

비동기 작업 X
인수 변경 X
동일한 인수 = 동일한 결과

이전 상태액션을 받아서 다음 상태를 반환한다

(previousState, action) => newState

이전 상태를 변경하는게 아님.
그저 새로운 상태를 반환 하는 것 !

기존 상태를 복사하고
변화를 준다음에 반환

reducers/counter.js

STORE

어플리케이션의
현재상태를 지니고있음

createStore

store 가 하는 일

dispatch(action)

getState()

subscribe(listener)

replaceReducer(nextReducer)

react-redux

http://bestalign.github.io/2015/10/26/cartoon-intro-to-redux/

Provider

<Provider store={store}>

    <App/>

</Proivder>

connect([...options])

컴포넌트를 REDUX 에 연결하는 함수를 반환합니다.

connect()(Counter)

store에 연결 된 새로운 컴포넌트 클래스가 반환됨

옵션이 없으면 this.props.store 로 접근 가능

connect(
    [mapStateToProps],    
    [mapDispatchToProps],
    [mergeProps],
    [options]
)

{ [ pure = true ], [ withRef = false ] }

getWrappedInstance()

redux-tutorial

By Minjun Kim

redux-tutorial

  • 1,367