angular – @ ngrx / store订阅商店的一部分,避免检测其他部分的
发布时间:2020-12-17 06:48:39 所属栏目:安全 来源:网络整理
导读:背景 我商店中的一个减速器处理应用程序中选择的内容.这个商店的界面(我们称之为app)可能如下所示: interface IApp { selectedProject: IProject; selectedPart: IPart;} 所以我希望订阅仅在选择了不同的“项目”时执行操作.我写了这样的东西: this.store.
背景
我商店中的一个减速器处理应用程序中选择的内容.这个商店的界面(我们称之为app)可能如下所示: interface IApp { selectedProject: IProject; selectedPart: IPart; } 所以我希望订阅仅在选择了不同的“项目”时执行操作.我写了这样的东西: this.store.select('app') .map((store: IApp) => store.selectedProject) .subscribe((project: IProject) => { // Stuff happens here }); 当selectedProject更改时,此函数会执行此操作.但是,当selectedPart更改时,它也会执行此操作.显然,无论地图如何,它都会监听整个应用商店.那讲得通. 题 我不希望这种情况发生.我只希望我的函数在selectedProject更改时执行. 我知道我可以将selectedProject和selectedPart拆分到不同的商店来解决这个问题.但是,我很快就能找到许多商店.也许这就是它的意图? 还有另外一种方法吗?我可以使用此界面保留商店,并且订阅仅检测商店中selectedProject部分的更改吗? 解决方法
我相信你在寻找
distinctKeyUntilChanged .
this.store.select('app') //Only emit when selectedProject has changed .distinctUntilKeyChanged( //Key to filter on 'selectedProject',//Optional comparison function if you have a specific way of comparing keys (x,y) => x.projectName === y.projectName) .pluck('selectedProject') .subscribe((project: IProject) => {}); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |