Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Redux: state, селектор, memo

Reselect для чего?

Этот вопрос помогает понять, зачем нужна библиотека reselect в работе с Redux.

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

Reselect — это библиотека для создания селекторов, которые извлекают и обрабатывают данные из состояния Redux. Она обеспечивает мемоизацию, что предотвращает ненужные вычисления, если входные данные не изменились. Это особенно полезно для сложных вычислений, которые зависят от состояния.

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

Reselect — это библиотека, которая упрощает создание селекторов для работы с Redux. Селекторы — это функции, которые извлекают данные из состояния. Простые селекторы возвращают данные напрямую, но для более сложных вычислений может потребоваться комбинировать несколько частей состояния. В таких случаях без мемоизации одни и те же вычисления будут повторяться каждый раз, когда селектор вызывается, даже если данные не изменились.

Мемоизация — ключевая особенность reselect. Она сохраняет результат селектора и пересчитывает его только тогда, когда входные данные изменились. Это повышает производительность приложения.

Пример использования reselect:

Установка:

npm install reselect

Создание селекторов:

import { createSelector } from 'reselect';
// Примитивные селекторы
const selectTodos = (state) => state.todos;
const selectFilter = (state) => state.filter;
// Мемоизированный селектор
const selectFilteredTodos = createSelector(
	[selectTodos, selectFilter],
	(todos, filter) => {
		switch (filter) {
			case 'completed':
				return todos.filter((todo) => todo.completed);
			case 'active':
				return todos.filter((todo) => !todo.completed);
			default:
				return todos;
		}
	}
);
// Использование:
const filteredTodos = selectFilteredTodos(store.getState());

Преимущества:

  • Оптимизация: Избегает повторного выполнения сложных вычислений.

  • Организация: Улучшает читаемость кода, абстрагируя логику доступа к данным.

  • Повторное использование: Один селектор можно использовать в нескольких компонентах.

Reselect часто используется в крупных приложениях, где есть сложные вычисления с состоянием. Это позволяет оптимизировать производительность и упростить управление состоянием.

Уровень

  • Рейтинг:

    2

  • Сложность:

    4

Навыки

  • Redux

    Redux

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

#state

#селектор

#memo

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