17.6.1.2 todos 모듈에 적용하기
똑같은 작업을 todos 모듈에도 적용해 봅시다. 먼저 액션 생성 함수를 교체해 줄 텐데, 조금 다른 점이 있습니다. 바로 각 액션 생성 함수에서 파라미터를 필요로 한다는 점입니다.
createAction으로 액션을 만들면 액션에 필요한 추가 데이터는 payload라는 이름을 사용합니다. 예를 들면 다음과 같습니다.
const MY_ACTION = 'sample/MY_ACTION'; const myAction = createAction(MY_ACTION); const action = myAction('hello world'); /* 결과: { type: MY_ACTION, payload: 'hello world' } */
액션 생성 함수에서 받아 온 파라미터를 그대로 payload에 넣는 것이 아니라 변형을 주어서 넣고 싶다면, createAction의 두 번째 함수에 payload를 정의하는 함수를 따로 선언해서 넣어 주면 됩니다.
const MY_ACTION = 'sample/MY_ACTION'; const myAction = createAction(MY_ACTION, text => `${text}!`); const action = myAction('hello world'); /* 결과: { type: MY_ACTION, payload: 'hello world!' } */