Ответ
Генераторы Redux-Saga сложны из-за их асинхронной природы и необходимости понимания концепций генераторов в JS. Они требуют ручного управления потоком выполнения через yield
, что усложняет отладку и чтение кода. Также необходимо запоминать эффекты (например, call
, put
), которые абстрагируют сайд-эффекты, но добавляют уровень абстракции.
Пример:
function* fetchUser(action) {
try {
const user = yield call(api.fetchUser, action.payload.userId);
yield put({ type: 'USER_FETCH_SUCCEEDED', user });
} catch (e) {
yield put({ type: 'USER_FETCH_FAILED', message: e.message });
}
}
Проблемы:
- Кривая обучения (генераторы + эффекты)
- Избыточность для простых задач
- Сложность тестирования (нужно мокать эффекты)