Встречается на собеседованиях • сегодня

Как использовал 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 (
dispatch({ type: 'SET_FIELD', field: 'email', value: e.target.value })} /> {state.errors.email &&

{state.errors.email}

} {/* ... */}
); } ``` **Плюсы:** - Чистая логика обновлений в одном месте. - Легко тестировать редьюсер отдельно. - Подходит для комплексных стейтов (например, формы, модалки, сложные UI-состояния).
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы