Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Redux: middleware, logging

Где можно логировать время клика на кнопку в Redux?

Этот вопрос проверяет понимание middleware в Redux и их роли в перехвате и обработке действий (actions).

Короткий ответ

Логировать время клика на кнопку в Redux лучше всего с помощью middleware. Middleware — это точка, через которую проходят все действия (actions) перед тем, как они достигнут редюсера (reducer). Внутри middleware вы можете перехватить нужное действие (например, 'BUTTON_CLICKED') и залогировать текущее время (console.log(Date.now()) или отправить в сервис логирования). Это централизованный и непротиворечивый подход.

Длинный ответ

В архитектуре Redux данные текут в одном направлении: View -> Action -> Reducer -> Store -> View. Middleware предоставляет мощный механизм для расширения этого потока.

Почему middleware — лучшее место?

  • Отделение ответственности: Логика логирования не загрязняет ни компоненты (UI), ни редюсеры (логику обновления состояния).

  • Централизация: Вы можете логировать все действия в одном месте, а не искать их по всему коду приложения.

  • Доступ к полному действию: Middleware имеет доступ к объекту действия action, что позволяет логировать не только время, но и полезную нагрузку (payload).

Как это реализовать?

  1. Создайте кастомное middleware:

    javascript

    const loggerMiddleware = store => next => action => {
      // Логируем время и действие ДО его обработки редюсером
      if (action.type === 'BUTTON_CLICKED') {
        console.log('Button clicked at:', new Date().toISOString());
      }
      // Передаем действие следующему middleware в цепочке или редюсеру
      return next(action);
    };
  2. Подключите middleware к store:

    javascript

    import { createStore, applyMiddleware } from 'redux';
    import rootReducer from './reducers';
    
    const store = createStore(
      rootReducer,
      applyMiddleware(loggerMiddleware) // и другие middleware...
    );

Альтернативные (менее предпочтительные) места:

  • В компоненте (обработчике клика): Нарушает принцип разделения ответственности, усложняет тестирование.

  • В редюсере: Редюсеры должны быть чистыми функциями, а логирование — это побочный эффект.

Вывод

Для логирования действий, включая время кликов, используйте middleware Redux. Это стандартный, поддерживаемый и наиболее чистый с архитектурной точки зрения подход.

Уровень

  • Рейтинг:

    3

  • Сложность:

    6

Навыки

  • Redux

    Redux

Ключевые слова

#middleware

#logging

Подпишись на React Developer в телеграм