Я работаю с реагировать 16.8.2 .
У меня есть простой код наблюдателя саги:
export default function* taskWatcher() {
yield all([
fork(subTaskWatcher1),
fork(subTaskWatcher2),
])
}
и код под-наблюдателя,
function* subTaskWatcher2() {
const actionObj = yield take('ACTION');
const { history } = actionObj.payload;
let validated = false;
//... some Computation to validate navigation ... //
if (validated) yield call(history.push, '/pathname')
}
, который перехватывает действие и на основе некоторых вычислений определяет, должен ли быть задан новый путь в history
объекте или нет.
Это хорошо работает только в первый раз, когда я взаимодействую с CTA, которыйзапускает код выше.Все другие взаимодействия пропускаются, в результате call
эффекта саги, являющегося блокирующим вызовом.
Под этим я подразумеваю следующее: если я вернусь на страницу, имеющую CTA,
иесли я нажму на него еще раз, навигация сейчас не будет.
Обсуждение вопроса this github относится к моей проблеме.
Я упомянул this ответ.На самом деле это не относится к моей проблеме.
Я пролистал страницу неблокирующих вызовов redux-saga в документах, когда сталкивался с подобной проблемой в прошлом.Чего мне не хватает, чтобы понять саги и их последствия?