const 타입 = ‘액션타입’
접두사(reducer)를 붙여주는 이유?
=> 서로 다른 리듀서에서 액션이름이 중첩되는 것을 방지합니다.
변수명
은 액션 생성 함수의 return에서 type
을 지정할 때 사용합니다.값
은 리듀서 내부에서 case
를 나눌 때 사용합니다.const UPDATE = "list/UPDATE"
export
합니다.export function 액션생성함수(값){
return { type: 타입, 값 }
}export function updateList(list_index){ return {type: UPDATE, list_index} }
import {액션생성함수} from ‘경로’
import dispatch from ‘react-redux’import {액션생성함수} from ‘경로’ import dispatch from 'react-redux' ... dispatch(updateList('사용할 값'))
action
의 type
을 사용해 switch문을 실행합니다.export default function reducer(state = initialList, action ={}){
switch (action.type){
default: {
return state;
}
}
}
Reducer | 담고 있는 내용 | 담고 있는 값 |
---|---|---|
1. State | 현재 가지고 있는 값 | [{…}, {…}, {…}] |
2. Action | 액션에 넣어 주고 있는 값, 액션 type | type: “list/UPDATE”, list_index: “0” |
case ‘액션타입’ : {
return {키: 업데이트할 값}
}export default function reducer(state = initialList, action = {}) { switch (action.type) { case "list/UPDATE" : { console.log('check') return state; } default: { return state; } } }
dispatch(액션생성함수(보낼 값))
onclick={()=>{ dispatch(updateList(list_index)) }}
case "list/UPDATE" : {
const new_list = state.list.map((l, idx)=>{
if(parseInt(action.list_index) === idx){
return {...l, completed: true;} // completed만 true로 변경
}
})
return {list: new_list} // 변경한 배열을 return
}