// 리듀서 = (상태, 액션)
// 액션 타입 분석
// 이전 상태 → 다음 상태로 교체
// 다음 상태 반환
const reducer = (prevState = initState, action) {
switch(action.type) {
case INCREASE_COUNT:
return prevState + 1
case DECREASE_COUNT:
return prevState - 1
default:
return prevState
}
}
subscribe() : 상태 변경 구독(subscribe, 감지)하여 상태 업데이트 되면 등록된 listener render() 실행
getState() : 스토어에 등록된 상태정보(state값) 가져오기
Redux 흐름
state를 가져올 때
store의 getState() 함수를 실행시킨다.
getState() 함수는 store 안의 state를 읽고 그 정보를 가져와 반환해준다.
state를 변경할 때
사용자(클라이언트)는 store의 dispatch 함수를 실행시킨다. - 이때, dispatch 함수를 실행할 때 무엇을 변경할지, 어떻게 변경할지에 대한 정보를 전달하는데 그 객체가 'action' 이다.
dispatch 함수는 action객체를 받고, reducer 함수를 실행시킨다. - reducer 함수는 2개의 인자를 받는데 첫번째는 현재 state, 두번째는 dispatch에서 전달한 action 객체이다.
reducer 함수는 action 을 토대로 state를 변경한 후, 변경된 state를 반환해준다.
reducer 함수가 종료되면 dispatch 함수는 subscribe 함수에 등록된 render 함수를 실행한다.
render 함수는 state를 가져와 사용자에게 보여준다. ( case 1 과 동일하게 )
// state 쓰기 : dispatch({action})
<form onsubmit="
store.dispatch( { type: 'create', payload: {title: title, desc: desc} } ); ">
// 실제 state 변경 : Reducer
function reducer(state, action){
if (action.type === 'create'){
// state =
}
}
// state 읽기 : getState
function render(){
var state = store.getState();
document.querySelector('#app').innerHTML = ``;
}
// render 등록 : subscribe
store.subscribe(render):