所以,我第一次尝试使用NGXS,我注意到当我在Angular的ngOnInit()函数中添加以下代码时,它总是获取接口:
this.store.dispatch(new FooActions.GetAll());或者它不是功能的一部分?我是否应该在每次发送从服务器获取数据的操作时手动执行检查?
发布于 2021-11-16 08:01:10
因此,这里有两件事要做,以减少API调用。当您执行API调用时,浏览器会获取数据,如果启用了缓存,它会将数据保存在缓存中。
现在,当您使用状态管理时,您需要在每次刷新或重新加载应用程序时将API数据存储到存储中,因为它不是数据的持久存储。
这意味着,在调用API之前,您应该检查存储中是否有数据。如果您有数据,只需从存储中获取数据并遵循相同的应用程序流,否则点击API并获取最新数据并将其保存在存储中。
发布于 2021-11-29 19:05:27
您可以使用selectSnapshot
selectSnapshot(StateName.SelectorName);示例
const dataInsdeStore = this.store.selectSnapshot(StateName.SelectorName);
if (!dataInsdeStore) {
this.store.dispatch(new FooActions.GetAll());
}dataInsdeStore返回数据,则商店已经有数据,不需要调用接口
dataInsdeStore返回null或empty,则需要调用接口,因为状态为空selectSnapshot的资源
https://stackoverflow.com/questions/69985510
复制相似问题