问题描述
我在同一状态片中有多个EntitySate。当我使用一个实体适配器更新时,其他EntityState的可观察到的选择器也会被触发,尽管选择器未访问更新的状态片。这是预期的行为吗?
状态:
export interface ComputerState extends EntityState<Computer> {
}
export interface PersonState extends EntityState<Person> {
}
export interface DataState {
computer: ComputerState;
person: PersonState;
}
以下reducer动作使可观察到的人员选择器发出新值:
on(Actions.updateComputerExample,(state,{ id }) => {
return {
...state,computer: computeradapter.updateOne(
{ id: id,changes: { name: 'test' } },state.computer
),};
}),
人员选择器:
export const selectPersons= createSelector(
selectState,state=> state? personAdapter.getSelectors().selectAll(state.person) : null
)
有人对此有解决方案吗?
解决方法
您应该像这样对减速器进行编码:
on(Actions.updateComputerExample,(state,{ id }) => {
return computerAdapter.updateOne(
{ id: id,changes: { name: 'test' } },{ ...state });
}),