0

正如这里所讨论的,React reducer 似乎必须是纯函数并且永远不会产生副作用(没有 API 调用改变任何东西)。如果输入无效,在减速器中抛出错误是否安全)?(这不被认为是副作用吗?)

4

2 回答 2

1

这是不安全的。你应该总是做你的检查之前。

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

于 2020-06-15T12:29:29.253 回答
1

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

这个问题的答案表明,如果抛出一个错误,redux 将什么也不做,应用程序将保持之前的状态。

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

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

不,正如您所说,抛出是一种副作用,无论如何可能都无法为其编写错误处理代码。

最好的方法(参见链接的问题)可能是在 reducer 中捕获错误并更新状态以正确指示它。

于 2020-09-02T23:44:08.700 回答