Этот вопрос направлен на проверку понимания основ архитектуры Redux.
Ключевые принципы Redux:
Единое хранилище: Все состояние хранится в одном объекте.
Состояние только для чтения: Изменять состояние можно только через действия.
Изменения происходят чистыми функциями: Редьюсеры — это чистые функции, которые принимают текущее состояние и действие и возвращают новое состояние.
Redux основывается на трех ключевых принципах:
Единое хранилище (Single Source of Truth):
Весь состояние приложения хранится в одном объекте, называемом store. Это упрощает отладку, так как все данные приложения находятся в одном месте. Например:
const store = {
user: { name: 'Alice', loggedIn: true },
cart: [{ id: 1, name: 'Item A', quantity: 2 }]
};Состояние только для чтения (State is Read-Only):
Состояние нельзя изменять напрямую. Вместо этого создаются действия (actions), которые описывают изменения. Это делает изменения предсказуемыми и легко отслеживаемыми. Например:
const action = { type: 'ADD_ITEM', payload: { id: 2, name: 'Item B' } };Изменения через чистые функции (Changes are Made with Pure Functions):
Для обработки действий и изменения состояния используются редьюсеры — функции, которые не имеют побочных эффектов и всегда возвращают одно и то же значение для одинаковых входных данных. Пример редьюсера:
function cartReducer(state = [], action) {
switch (action.type) {
case 'ADD_ITEM':
return [...state, action.payload];
default:
return state;
}
}Эти принципы делают Redux предсказуемым и удобным для работы в команде. Например, если приложение ведет себя некорректно, можно легко проследить, какое действие вызвало изменения, и восстановить предыдущее состояние.