Что такое action в Redux

Ответ

Action в Redux — это простой JavaScript-объект, который описывает изменение состояния приложения. Он должен иметь поле type (строка-идентификатор), а также может содержать дополнительные данные (payload).

Пример:

const addTodoAction = {
  type: 'todos/addTodo',
  payload: 'Learn Redux'
};

Ключевые моменты:

  1. Action создается с помощью action creator (функция, возвращающая action)
  2. Передается в хранилище через dispatch()
  3. Должен быть сериализуемым (без функций, классов и т.д.)

Action creator пример:

function addTodo(text) {
  return {
    type: 'ADD_TODO',
    payload: text
  };
}

Redux Toolkit упрощает работу с actions через createAction().

Ответ 18+ 🔞

А, слушай, вот эта вся хуйня с экшенами в Redux — это же просто объект, ёпта! Ну, типа, бумажка с запиской: "эй, хранилище, сделай вот это, блядь!"

Вот смотри, обычный JavaScript-объект, но с одним обязательным полем — type. Это как маркер, название того, что нужно сделать. А ещё можно приложить данные, это payload называется.

Вот, например, представь, что тебе нужно добавить новую задачу в список:

const addTodoAction = {
  type: 'todos/addTodo', // Вот, команда: "добавь тудушку, сука!"
  payload: 'Learn Redux'  // А это сама задача: "Выучить Redux, блядь"
};

И главное, что нужно запомнить, чтобы не обосраться:

  1. Action creator — это такая функция-обёртка, которая эти бумажки штампует. Чтобы каждый раз руками не писать, понимаешь?
  2. Чтобы эта бумажка дошла до хранилища, её нужно задиспатчитьdispatch(). Без этого она так и будет валяться, никому не нужная.
  3. Всё, что ты туда кладёшь, должно быть сериализуемым. Никаких там функций, промисов или классов, ёпта! Только данные, которые можно в JSON превратить.

Вот как выглядит такой создатель экшенов, старым дедовским способом:

function addTodo(text) {
  return {
    type: 'ADD_TODO',
    payload: text
  };
}

Но это, блядь, каменный век! Если ты используешь Redux Toolkit (а ты должен, ибо не мудак), то там есть волшебная хуйня createAction(), которая всю эту рутину за тебя делает. Овердохуища как удобно, в рот меня чих-пых!

Короче, экшен — это просто сообщение. Типа "эй, ёбаное хранилище, вот тебе команда и данные, делай что должен!" Всё гениальное — просто, как хуй с горы.