Что такое action creator в Redux

Ответ

Action creator — это функция, которая создает и возвращает action (объект с полем type и опциональными данными). Упрощает генерацию действий и делает код чище.

Пример:

// Action creator
const addTodo = (text) => ({
  type: 'ADD_TODO',
  payload: { text }
});

// Использование
dispatch(addTodo('Learn Redux'));

Плюсы:

  • Централизованное управление actions
  • Упрощает тестирование
  • Позволяет добавлять логику перед созданием action

Для асинхронных операций используются thunk-экшены или другие middleware.

Ответ 18+ 🔞

Да ты посмотри, какой у нас тут умник с action creator'ами подъехал! Ну ладно, слушай сюда, сейчас разжую.

Представь себе, что action — это такая бумажка с приказом, типа «Всем стоять, всем лежать». А action creator — это, блядь, не кто иной, как наш личный секретарь-шизик, который эти бумажки штампует. Вместо того чтобы каждый раз чесать репу и писать { type: 'ЧТО_ТО_СДЕЛАТЬ', payload: данные }, ты просто кричишь этому секретарю: «Вася, напиши приказ добавить дело «Выучить Redux»!». И он тебе уже готовый, красивый объект подсовывает.

Вот, смотри, как этот хитрый жополиз работает:

// Это и есть наш секретарь-creator
const addTodo = (text) => ({
  type: 'ADD_TODO',
  payload: { text }
});

// А это мы его используем, вместо того чтобы городить объект вручную
dispatch(addTodo('Learn Redux'));
// Получится ровно то же самое, как если бы написали:
// dispatch({ type: 'ADD_TODO', payload: { text: 'Learn Redux' } })

И в чём же, спросишь ты, весь цимес? А цимес, дружок, в следующем:

  1. Порядок наведут. Все твои action'ы теперь живут в одном месте, а не раскиданы по коду, как говно по тайге. Захотел поменять type — пошёл в одного секретаря, а не по всему офису бегаешь.
  2. Тестировать проще. Подсунул секретарю разные данные — посмотрел, какие бумажки он печатает. Всё прозрачно, как слёзы ребёнка.
  3. Логику впихнуть можно. Иногда перед тем, как штампнуть бумажку, секретарю надо мозги включить. Например, проверить данные или сгенерировать ID. Он это сделает прямо внутри себя, и dispatch получит уже готовый, правильный action.

А теперь, внимание, важный момент, чтобы не облажаться! Если тебе нужно не просто бумажку написать, а сходить нахуй, то есть сделать запрос на сервер — это уже не к простому секретарю. Тут нужен thunk или другая middleware-штука. Это уже продвинутый секретарь, который умеет не только штамповать, но и кофе сходить сварить (выполнить асинхронную операцию), пока основной процесс ждёт.

Короче, юзай creator'ы — не пожалеешь. Код чище, голова целее. А если не будешь — сам потом в этом говне ковыряться, как Герасим в пруду после Муму.