在 React Reducer 中抛出错误是否安全?

Is it safe to throw an Error in a React Reducer?

正如所讨论的 here,似乎 React reducers 必须是纯函数并且从不产生副作用(没有 API 调用改变任何东西)。在无效输入的情况下在减速器中抛出错误是否安全)? (这不是副作用吗?)

不安全。您应该始终在之前进行检查。

例如在中间件中。阻止操作到达减速器并从那里抛出错误。

在减速器中抛出错误安全吗?

this question 的答案指出,如果抛出错误,redux 将不执行任何操作,应用程序将保留之前的状态。

所以,假设实现没有改变,它可能是 安全的(不会造成损害)只要你没有改变以前的状态,纯函数应该永远不会。

依靠投入减速器是好主意吗?

没有。正如您所说,抛出是一种副作用,并且可能无法为它编写错误处理代码。

最好的方法(参见相关问题)可能是捕获减速器内部的错误并更新状态以正确指示它。