0
我从@ngrx example以下代码。仅当新的结果是从先前的不同如何通过@ngrx store.select始终发出状态?
constructor(private store: Store<fromRoot.State>) {
this.searchQuery$ = store.select(fromRoot.getSearchQuery).take(1);
this.books$ = store.select(fromRoot.getSearchResults);
this.loading$ = store.select(fromRoot.getSearchLoading);
}
在上面的代码中,store.select
将发射值。
无论新流与上一个流相同还是不同,我怎样才能发出this.books$
?我必须使用哪种store
方法?
我有一种情况,UI通过''@ngrx effect'''从'''@ngrx DB'''('''cache''')请求数据。如果'''cache'''中没有数据,我发送一个动作,并且在检查这个动作中的有效载荷的reducer中什么也没找到,然后设置一个名为'''cacheAvailbility''的状态属性到''' ''false'''。该状态由容器'''observer'''订阅,启动另一个操作从数据库读取。所以这个''''observer'''已经订阅的状态可以是''''''''''如果''''''''''''中没有数据,可以再次使用'false'。在这两种情况下,准备好数据库是必要的。 –
我使用'''state''来管理缓存可用性,这可能使这变得复杂。我可以在效果本身中派发另一个动作,但是接下来我必须使用像if语句一样的'''if'''语句if(data === undefined)store.dispatch(new ReadFromDBAction(customerId)) }其他{ \t store.dispatch(新ReachFromCacheSuccessfulAction(客户ID)) }''' –
听起来好像有些复杂的架构,我敢肯定,可以简化 - 但这可能是一个不同的问题的一部分 - 只要一件事:不要在效果中使用'dispatch' - 效果应该只返回后续动作 - 在效果中间调度一个动作__will__会导致ngrx-store中的复杂问题 – olsn