그냥 객체이다.

두가지 형태의 액션이 있다.
{type:'TEST'} // payload 없는 액션
{type:'TEST', params: 'hello'}  // payload 있는 액션

type 만이 필수 프로터피이며, 문자열이다.
액션은 무슨 일을 할까?
1. 액션 생성자를 통해 액션을 만들어 낸다.
2. 만들어낸 액션 객체를 리덕스 스토어에 보낸다.
3. 리덕스 스토어가 액션 객체를 받으면 스토어의 상태 값이 변경 된다.
4. 변경된 상태 값에 의해 상태를 이용하고 있는 컴토넌트가 변경 된다.
액션은 스토어에 보내는 일종의 인풋이라고 볼 수 있다.
// redux/actions.js
export const ADD_TODO = "ADD_TODO";
export const COMPLETE_TODO = "COMPLETE_TODO";

// { type: ADD_TODOM, text: '할일' }
export function addTodo(text) {
  return {
    type: ADD_TODO,
    text,
  };
}

// { type: COMPLETE_TODO, index: 0 }
export function completeTodo(index) {
  return {
    type: COMPLETE_TODO,
    index,
  };
}

export const SHOW_ALL = "SHOW_ALL";
export const SHOW_COMPLETE = "SHOW_COMPLETE";

export function showAll() {
  return { type: SHOW_ALL };
}

export function showComplete() {
  return { type: SHOW_COMPLETE };
}