> Как различать и отличать action в Redux? (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Инрэко
Стек: JavaScript
> Пример ответа
В Redux action - это простой объект, который описывает намерение изменить состояние. Основное различие между action происходит по полю type. Каждый action обязан иметь уникальное строковое поле type, которое служит идентификатором. Например, { type: 'ADD_TODO', payload: 'Купить молоко' } и { type: 'REMOVE_TODO', id: 1 } - это разные action, потому что у них разные type.
Чтобы отличать action друг от друга, следуют соглашениям:
-
Строковые константы -
typeзадают через константы (например,export const ADD_TODO = 'ADD_TODO'), что предотвращает опечатки и упрощает рефакторинг. -
Структура - часто используют стандарт Flux Standard Action (FSA): action содержит
type, опциональныеpayload(данные),error(флаг ошибки) иmeta(дополнительная информация). Например,{ type: 'FETCH_USER_SUCCESS', payload: userData }отличается от{ type: 'FETCH_USER_FAILURE', payload: error, error: true }. -
Именование - принято использовать глаголы в прошедшем времени или существительные, отражающие событие:
'USER_LOGGED_IN','DATA_LOADED'. Это помогает читать код как последовательность событий.
На практике action различают в редьюсере через switch по action.type. Например:
JAVASCRIPTswitch (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) уточняют, что именно произошло.
> Похожие задачи по frontend
Почему Promise.race не подходит для выбора лучшего покупателя в JavaScript
Как работает массив tickets в JavaScript
Почему в JavaScript переменная, объявленная через var, всплывает и инициализируется значением undefined?
Какие структуры данных использовать для хранения параметров и результатов мемоизации в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью