调度 @ngrx/router-store 操作时 Redux devtools 扩展错误
Redux devtools extension error when dispatching @ngrx/router-store action
我正在使用以下库:
- Angular 4
- @ngrx/router-store
- @ngrx/store-devtools
就在最近,当尝试发送 go
路由器操作并将 relativeTo
设置为当前活动路由时:
go(['test', id], {}, {relativeTo: this._active}))
我收到这个错误:
ERROR TypeError: toISOString is not a function
at String.toJSON (<anonymous>)
at Object.<anonymous> (shim.js:736)
at derez (<anonymous>:2:5166)
at derez (<anonymous>:2:5787)
at derez (<anonymous>:2:5787)
at derez (<anonymous>:2:5787)
at derez (<anonymous>:2:5787)
at derez (<anonymous>:2:5605)
at derez (<anonymous>:2:5787)
at derez (<anonymous>:2:5787)
at derez (<anonymous>:2:5787)
at derez (<anonymous>:2:5787)
at derez (<anonymous>:2:5605)
at derez (<anonymous>:2:5787)
at derez (<anonymous>:2:5787)
处理负载中 ActivatedRoute
的开发工具似乎有问题(类似于 this issue)。
如果我实施新版本的 go
动作创建器(如此处建议:Redux Devtools Extension Troubleshooting)以向 NavigationExtras
添加 toJSON
函数,那么它所有作品:
go(path: string|any[], query?: any, extras?: NavigationExtras): any {
extras['toJSON'] = function(): any {
return { ...this, relativeTo: this.relativeTo.snapshot.url };
};
const payload = { path, query, extras };
return { type: routerActions.GO, payload };
}
还有其他人 运行 关注这个问题吗?关于如何解决这个问题有什么建议吗?
更新: 看起来它也与延迟加载的路由有关。仅当当前路由是延迟加载模块的一部分(即通过 loadChildren
)
时才会发生该错误
很可能您传递的是无法序列化的 React 合成事件。请参阅类似问题和故障排除。请注意,该问题的解决方案在 React 16 中将不可用,因为我们依赖于 React 内部结构。因此,我建议从 troubleshooting.
中选择一种解决方案
但是,如果我们能让 jsan 在这种情况下不抛出,但至少跳过那些数据,那就太好了。如果您可以在那里添加带有测试用例的 pr,将不胜感激。似乎 toISOString 的问题仅针对特定事件,因为我无法重现。
redux-devtools 试图解析一个函数,因为 json 通常可以正常工作,但它假设商店中的所有东西都是对象而不是函数,所以它打破了 redux 的基本思想是管理事件状态使用函数的发射使用 angular
的标准
我正在使用以下库:
- Angular 4
- @ngrx/router-store
- @ngrx/store-devtools
就在最近,当尝试发送 go
路由器操作并将 relativeTo
设置为当前活动路由时:
go(['test', id], {}, {relativeTo: this._active}))
我收到这个错误:
ERROR TypeError: toISOString is not a function
at String.toJSON (<anonymous>)
at Object.<anonymous> (shim.js:736)
at derez (<anonymous>:2:5166)
at derez (<anonymous>:2:5787)
at derez (<anonymous>:2:5787)
at derez (<anonymous>:2:5787)
at derez (<anonymous>:2:5787)
at derez (<anonymous>:2:5605)
at derez (<anonymous>:2:5787)
at derez (<anonymous>:2:5787)
at derez (<anonymous>:2:5787)
at derez (<anonymous>:2:5787)
at derez (<anonymous>:2:5605)
at derez (<anonymous>:2:5787)
at derez (<anonymous>:2:5787)
处理负载中 ActivatedRoute
的开发工具似乎有问题(类似于 this issue)。
如果我实施新版本的 go
动作创建器(如此处建议:Redux Devtools Extension Troubleshooting)以向 NavigationExtras
添加 toJSON
函数,那么它所有作品:
go(path: string|any[], query?: any, extras?: NavigationExtras): any {
extras['toJSON'] = function(): any {
return { ...this, relativeTo: this.relativeTo.snapshot.url };
};
const payload = { path, query, extras };
return { type: routerActions.GO, payload };
}
还有其他人 运行 关注这个问题吗?关于如何解决这个问题有什么建议吗?
更新: 看起来它也与延迟加载的路由有关。仅当当前路由是延迟加载模块的一部分(即通过 loadChildren
)
很可能您传递的是无法序列化的 React 合成事件。请参阅类似问题和故障排除。请注意,该问题的解决方案在 React 16 中将不可用,因为我们依赖于 React 内部结构。因此,我建议从 troubleshooting.
中选择一种解决方案但是,如果我们能让 jsan 在这种情况下不抛出,但至少跳过那些数据,那就太好了。如果您可以在那里添加带有测试用例的 pr,将不胜感激。似乎 toISOString 的问题仅针对特定事件,因为我无法重现。
redux-devtools 试图解析一个函数,因为 json 通常可以正常工作,但它假设商店中的所有东西都是对象而不是函数,所以它打破了 redux 的基本思想是管理事件状态使用函数的发射使用 angular
的标准