Redux DevTools导致RxJS的switchMap行为不同。为什么?

时间:2018-11-15 10:12:08

标签: angular rxjs ngrx ngrx-store redux-devtools

我正在使用NGRX商店开发Angular 7应用程序。我已经在自己的Chrome浏览器中安装了Redux DevTools,以便可以在开发过程中使用它。

当我发现一个功能的行为有所不同时,我感到很困惑,这取决于是否在浏览器中启用了Redux DevTools 。在一种情况下,我遇到了错误,而在另一种情况下,一切正常。

确切的错误是:

TypeError: You provided an invalid object where a stream was expected. 
You can provide an Observable, Promise, Array, or Iterable 

幸运的是,我在this answer中发现了问题的根源-由于WebStorm的自动导入,我错误地导入了switchMap

import { switchMap } from 'rxjs/internal/operators';

代替

import { switchMap } from 'rxjs/operators';

但是,我仍然无法理解Redux DevTools的功能,以及为什么我的代码在启用该工具时能像我正确导入switchMap一样工作,反之亦然-这导致了禁用时出现错误(通常应该这样做)。

我怀疑这段代码对这里是否有帮助,但这是发生实际错误的代码。

return this._http
            .post(url, body, { headers })
            .pipe(
                // This switch map and the throwError function were causing the error.
                switchMap((response: any) => {
                    // Please, do ignore the logic itself. There's a reason behind it.
                    const { data } = response;
                    return !!data ? of(data) : throwError('Invalid arguments');
                })
            );

0 个答案:

没有答案