【问题标题】:Is it safe to throw an Error in a React Reducer?在 React Reducer 中抛出错误是否安全?
【发布时间】:2020-06-15 12:26:34
【问题描述】:

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

【问题讨论】:

    标签: reactjs use-reducer


    【解决方案1】:

    在 reducer 中抛出 Error 安全吗?

    this question 的回答指出,如果抛出错误,redux 将不做任何事情,应用程序将保持之前的状态。

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

    依靠引入减速器是一个好主意吗?

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 您能解释一下原因吗?在我看来,当抛出错误时,reducer 内部所做的更改不会用于更改状态,因此不会出现问题。
      • 因为如果你在reducer中抛出一个错误,你会阻止reducer返回状态,在这种情况下你会导致你的应用程序崩溃,在某些情况下你的商店根本无法工作,它将冻结(reducers 不会采取进一步的行动)。
      • 你确定吗?如果真的像你说的那样,如果在极少数情况下错误地出错,它可能会破坏你的整个应用程序而无法修复。对我来说,如果减速器由于某种原因无法运行,则不会发生状态更改,这似乎更自然。
      • 你能给个参考吗?
      • Check this link 并阅读有关 reducers 的内容,这家伙比我更了解,这是我第一次学习 redux 的地方。
      猜你喜欢
      • 1970-01-01
      • 2021-07-06
      • 2018-09-18
      • 2010-11-14
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多