Ответ
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' } })
И в чём же, спросишь ты, весь цимес? А цимес, дружок, в следующем:
- Порядок наведут. Все твои action'ы теперь живут в одном месте, а не раскиданы по коду, как говно по тайге. Захотел поменять
type— пошёл в одного секретаря, а не по всему офису бегаешь. - Тестировать проще. Подсунул секретарю разные данные — посмотрел, какие бумажки он печатает. Всё прозрачно, как слёзы ребёнка.
- Логику впихнуть можно. Иногда перед тем, как штампнуть бумажку, секретарю надо мозги включить. Например, проверить данные или сгенерировать ID. Он это сделает прямо внутри себя, и dispatch получит уже готовый, правильный action.
А теперь, внимание, важный момент, чтобы не облажаться! Если тебе нужно не просто бумажку написать, а сходить нахуй, то есть сделать запрос на сервер — это уже не к простому секретарю. Тут нужен thunk или другая middleware-штука. Это уже продвинутый секретарь, который умеет не только штамповать, но и кофе сходить сварить (выполнить асинхронную операцию), пока основной процесс ждёт.
Короче, юзай creator'ы — не пожалеешь. Код чище, голова целее. А если не будешь — сам потом в этом говне ковыряться, как Герасим в пруду после Муму.