Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Redux: state, props

Объясните концепцию «компонентов-контейнеров» в React Redux

Этот вопрос проверяет понимание разделения логики и представления в компонентах React при работе с Redux.

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

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

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

Концепция компонентов-контейнеров в React Redux основывается на разделении ответственности:

  • Контейнеры (containers) сосредоточены на подключении к хранилищу Redux. Они получают данные из глобального состояния и передают их своим дочерним компонентам.

  • Презентационные компоненты (presentational components) отвечают за отображение данных и не взаимодействуют напрямую с Redux. Они получают данные через пропсы и вызывают функции для отправки действий.

Контейнеры часто создаются с помощью функции connect, которая связывает компонент с состоянием и действиями. Пример:

import React from 'react';
import { connect } from 'react-redux';
function Counter({ count, increment }) {
	return (
		<div>
			<p>Count: {count}</p>
			<button onClick={increment}>Increment</button>
		</div>
	);
}
// Связывание с состоянием и действиями
const mapStateToProps = (state) => ({ count: state.counter });
const mapDispatchToProps = (dispatch) => ({
	increment: () => dispatch({ type: 'INCREMENT' }),
});
// Экспорт контейнера
export default connect(mapStateToProps, mapDispatchToProps)(Counter);

Контейнеры упрощают повторное использование логики, так как они изолируют работу с Redux. В современном React популярны хуки useSelector и useDispatch, которые выполняют ту же задачу, но избавляют от необходимости создавать отдельные контейнеры:

import React from 'react';
import { useSelector, useDispatch } from 'react-redux';
function Counter() {
	const count = useSelector((state) => state.counter);
	const dispatch = useDispatch();
	return (
		<div>
			<p>Count: {count}</p>
			<button onClick={() => dispatch({ type: 'INCREMENT' })}>Increment</button>
		</div>
	);
}

Таким образом, компоненты-контейнеры удобны для управления состоянием, но их концепция становится менее актуальной благодаря современным хукам.

Уровень

  • Рейтинг:

    2

  • Сложность:

    3

Навыки

  • Redux

    Redux

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

#state

#props

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