17.3.2.2 액션 생성 함수 만들기
다음으로 액션 생성 함수를 만듭니다. 조금 전과 달리 이번에는 액션 생성 함수에서 파라미터가 필요합니다. 전달받은 파라미터는 액션 객체 안에 추가 필드로 들어가게 됩니다.
modules/todos.js
const CHANGE_INPUT = 'todos/CHANGE_INPUT'; // 인풋 값을 변경함 const INSERT = 'todos/INSERT'; // 새로운 todo를 등록함 const TOGGLE = 'todos/TOGGLE'; // todo를 체크/체크 해제함 const REMOVE = 'todos/REMOVE'; // todo를 제거함 export const changeInput = input => ({ type: CHANGE_INPUT, input }); let id = 3; // insert가 호출될 때마다 1씩 더해집니다. export const insert = text => ({ type: INSERT, todo: { id: id++, text, done: false } }); export const toggle = id => ({ type: TOGGLE, id }); export const remove = id => ({ type: REMOVE, id });
위 액션 생성 함수 중에서 insert 함수는 액션 객체를 만들 때 파라미터 외에 사전에 이미 선언되어 있는 id라는 값에도 의존합니다. 이 액션 생성 함수는 호출될 때마다 id 값에 1씩 더해 줍니다. 이 id 값은 각 todo 객체가 들고 있게 될 고윳값이죠.
여기서 id 값이 3인 이유는 다음 절에서 초기 상태를 작성할 때 todo 객체 두 개를 사전에 미리 넣어 둘 것이므로 그다음에 새로 추가될 항목의 id가 3이기 때문입니다.