正如这里所讨论的,React reducer 似乎必须是纯函数并且永远不会产生副作用(没有 API 调用改变任何东西)。如果输入无效,在减速器中抛出错误是否安全)?(这不被认为是副作用吗?)
2 回答
1
这是不安全的。你应该总是做你的检查之前。
例如在中间件中。阻止动作到达减速器并从那里抛出错误。
于 2020-06-15T12:29:29.253 回答
1
在减速器中抛出错误是否安全?
这个问题的答案表明,如果抛出一个错误,redux 将什么也不做,应用程序将保持之前的状态。
所以,假设实现没有改变,只要你没有改变以前的状态,它可能是安全的(不会造成损害),这是纯函数永远不应该做的。
依靠投入减速机是个好主意吗?
不,正如您所说,抛出是一种副作用,无论如何可能都无法为其编写错误处理代码。
最好的方法(参见链接的问题)可能是在 reducer 中捕获错误并更新状态以正确指示它。
于 2020-09-02T23:44:08.700 回答