Ошибка редуктора отменяет все задачи, убивая все саги - PullRequest
1 голос
/ 28 января 2020

Дважды за последнее время я сталкивался с ошибкой в ​​редукторе из-за неопределенной переменной.

В обоих случаях это приводило к тому, что приложение перестало отвечать на запросы, потому что ошибка имела каскадный эффект, и вся моя сага "взяла" Команды были отменены. например,

Tasks cancelled due to error:
takeEvery(actionName1, sl)
takeLatest(actionName2, Yi)

et c.

Кроме того, в обоих случаях решение было простым - добавить защитное кодирование в редуктор, чтобы предотвратить это.

Однако, эффект разрушителен для приложения, если код позволяет undefined проскользнуть, и мне интересно, есть ли другой способ?

  • Должен ли я завернуть переключатель в редуктор с помощью попытки / захвата?
  • Есть ли способ остановить отмену всех задач при возникновении ошибки?

Спасибо за любой ввод

1 Ответ

0 голосов
/ 28 января 2020

У меня есть ответ, который работает, но я все равно буду благодарен за комментарии, чтобы проверить, является ли это лучшим ответом, поскольку я относительно новичок в Redux.

Я реализовал свое первое предложение сверху, и оно, кажется, работает ну и остановил бы мою проблему

try {
    switch (action.type) {
        case '...':
    ...
} catch (err) {
    // Do something with the error here
    return state;  // state is unchanged
}

Это правильно или есть лучший способ?
РЕДАКТИРОВАТЬ: Это должен быть чистый компонент, так что «Сделайте что-то с ошибкой здесь» должно означать добавить что-то заявить, чтобы отследить ошибку. Все остальное должно быть сделано чем-то, действующим на это изменение состояния.

...