如何从Redux存储中正确删除错误

时间:2019-06-24 15:16:55

标签: javascript reactjs redux react-redux redux-saga

我有一个react-redux应用程序,我捕获了来自redux-saga的每个错误响应,将其保存在redux-store中,并将其呈现在组件中。主要问题是在更新组件或用户移至另一个页面时,如何将其删除。我尝试使用组件生命周期方法(componentWillUpdate),但由于我将其他存储部件连接到该组件,因此它无法正常工作,并且在更新它们后,它会在用户看到之前清除错误。

我的问题是:是否有使用Redux存储/查看/删除错误的正确方法?

我以这种方式处理错误

export function* errorHandler(err: any): SagaIterator {
   // put an error in the redux-store
}

// it's a wrapper for every saga
export const genericErrorHandler = (saga: (...args: any[]) => SagaIterator, ...args: any[]) =>
    function* handleApp(action: any): any {
        try {
            yield call(saga, action, args);
        } catch (err) {
            yield call(errorHandler, err);
        }
    };

1 个答案:

答案 0 :(得分:0)

如果我们有关于您的应用程序设计以及您如何处理错误的更多详细信息,我可能会给出更具体的建议。但是,有些事情可能会有所帮助:

  • 按类型拆分错误,并为每个错误/拆分器/存储位置分配单独的错误。这将帮助您确定发生了哪种错误以及何时/如何显示每种错误。
  • 触发操作以清除错误状态。这样可以确保您确定不再出现哪些错误以及何时发生更改。如果可能的话,请勿将其作为其他事情的副作用,请具体说明何时以及为什么。
  • 如果错误状态特定于UI组件,并且应在该组件消失时将其从存储中移除,请考虑在该组件的componentWillUnmount方法中触发错误清除操作。仅在从DOM中删除组件时才调用此方法。