Безопасно ли выдавать ошибку в React Reducer?

Как обсуждалось здесь, похоже, что редукторы React должны быть чистыми функции и никогда не создают побочных эффектов (никакие вызовы API ничего не меняют). Безопасно ли выдавать ошибку в редукторе в случае неверного ввода)? (Разве это не считается побочным эффектом?)


person Shayan    schedule 15.06.2020    source источник


Ответы (2)


Безопасно выдавать ошибку в редукторе?

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

Итак, если реализация не изменилась, она, вероятно, безопасна (без результирующего ущерба) до тех пор, пока вы не изменили предыдущее состояние, чего никогда не должна делать чистая функция.

Хорошая идея - полагаться на добавление редуктора?

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

Лучший подход (см. Связанный вопрос) - это, вероятно, отловить ошибку внутри редуктора и обновить состояние, чтобы правильно указать ее.

person Blanc    schedule 02.09.2020

Это небезопасно. Вы всегда должны делать свою проверку раньше.

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

person CevaComic    schedule 15.06.2020
comment
Не могли бы вы объяснить почему? Мне кажется, что когда выдается ошибка, изменения, сделанные внутри редуктора, не используются для изменения состояния, и, следовательно, проблем не может возникнуть. - person Shayan; 15.06.2020
comment
Потому что, если вы выдадите ошибку в редукторе, вы остановите редуктор от возврата состояния, в этом случае вы вызовете сбой вашего приложения, а в некоторых случаях ваш магазин вообще не будет работать, он зависнет (никаких дальнейших действий примут редукторы). - person CevaComic; 15.06.2020
comment
Вы уверены, что? Если все так, как вы сказали, то, если в каком-то редком случае ошибка будет сделана по ошибке, это может испортить все ваше приложение без возможности восстановления. Мне кажется более естественным, что, если редуктор не может работать по какой-либо причине, изменения состояния не происходит. - person Shayan; 16.06.2020
comment
Не могли бы вы дать ссылку на это? - person Shayan; 16.06.2020
comment
Проверьте эту ссылку и прочтите о редукторах, этот парень знает лучше меня, вот где я впервые изучил редукс. - person CevaComic; 16.06.2020