> Как различать и отличать action в Redux? (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Инрэко

Стек: JavaScript

> Пример ответа

В Redux action - это простой объект, который описывает намерение изменить состояние. Основное различие между action происходит по полю type. Каждый action обязан иметь уникальное строковое поле type, которое служит идентификатором. Например, { type: 'ADD_TODO', payload: 'Купить молоко' } и { type: 'REMOVE_TODO', id: 1 } - это разные action, потому что у них разные type.

Чтобы отличать action друг от друга, следуют соглашениям:

  1. Строковые константы - type задают через константы (например, export const ADD_TODO = 'ADD_TODO'), что предотвращает опечатки и упрощает рефакторинг.

  2. Структура - часто используют стандарт Flux Standard Action (FSA): action содержит type, опциональные payload (данные), error (флаг ошибки) и meta (дополнительная информация). Например, { type: 'FETCH_USER_SUCCESS', payload: userData } отличается от { type: 'FETCH_USER_FAILURE', payload: error, error: true }.

  3. Именование - принято использовать глаголы в прошедшем времени или существительные, отражающие событие: 'USER_LOGGED_IN', 'DATA_LOADED'. Это помогает читать код как последовательность событий.

На практике action различают в редьюсере через switch по action.type. Например:

JAVASCRIPT
switch (action.type) {
case 'ADD_TODO':
return [...state, action.payload];
case 'REMOVE_TODO':
return state.filter(todo => todo.id !== action.id);
default:
return state;
}

Таким образом, ключевой способ отличить action - это его type, а остальные поля (payload, meta) уточняют, что именно произошло.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью