如何解决Angular / NGRX:实体和selectAll的奇怪行为?
ExpansionPanelList
来自seletAll
触发事件,但没有更改到自己的功能存储中,而是在根存储更改时。
打开演示,然后单击按钮。该按钮将更改分发到根存储中,但是功能存储中的selectAll也会触发事件:
仅当getSelectors()
用于接受道具作为参数的其他选择器中时,此行为才会发生。
seletAll仅在更改进入功能存储时才触发事件。
这是选择器:
seletAll
更新1 :
我还在ngrx github https://github.com/ngrx/platform/issues/2707
上发布了一个问题一个ngrx开发人员说
我不确定这是否是错误,是否是错误,如何解决。 根本原因是props选择器,该选择器共享相同的selectAll实例(因为它向下传递props到selectAll)。
更新2
解决方法是将选择器设置为工厂,并且不要传递props参数:
之前
export const selectBarStore = createFeatureSelector<State>('barStore');
export const selectBarState = createSelector(
selectBarStore,(state: State) => state ? state.bar : null
);
export const { selectEntities,selectAll } = adapter.getSelectors(selectBarState);
export const selectBarById = createSelector(
selectAll,(itemEntities: Bar[],props: {id: number}) =>
itemEntities ? itemEntities.filter(element => element.id === props.id) : []
);
之后
export const selectBarById = createSelector(
selectAll,props: {id: number}) =>
itemEntities ? itemEntities.filter(element => element.id === props.id) : []
);
主要问题是:这是NGRX错误还是我做错了什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。