Встречается на собеседованиях • сегодня
Как использовал useReducer на практике
`useReducer` удобен для управления сложным состоянием, особенно когда логика обновлений зависит от предыдущего состояния или требует нескольких действий.
**Пример:** управление формой с валидацией.
```jsx
const initialState = {
email: '',
password: '',
errors: {}
};
function reducer(state, action) {
switch (action.type) {
case 'SET_FIELD':
return { ...state, [action.field]: action.value };
case 'VALIDATE':
const errors = {};
if (!state.email) errors.email = 'Email is required';
if (!state.password) errors.password = 'Password is required';
return { ...state, errors };
default:
return state;
}
}
function LoginForm() {
const [state, dispatch] = useReducer(reducer, initialState);
const handleSubmit = (e) => {
e.preventDefault();
dispatch({ type: 'VALIDATE' });
if (Object.keys(state.errors).length === 0) {
// Submit logic
}
};
return (
);
}
```
**Плюсы:**
- Чистая логика обновлений в одном месте.
- Легко тестировать редьюсер отдельно.
- Подходит для комплексных стейтов (например, формы, модалки, сложные UI-состояния).

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы