Мой магазин похож на это
export interface State extends EntityState<featureModels.IModel> {
selectedModelsId: Set<number>;
isLoading?: boolean;
error?: any;
}
У меня есть следующее действие:
export class SelectModels implements Action {
public readonly type = ActionTypes.SelectModels;
constructor(public payload: {modelsIds: Array<number>}) {}
}
И триггер действия этого редуктора
const SELECT_MODELS = (state: State, action: featureAction.SelectModels) => {
console.log(new Set([...Array.from(state.selectedModelsId), ...action.payload.modelsIds]));
return {
...state,
selectedModelsId: new Set([...Array.from(state.selectedModelsId), ...action.payload.modelsIds]),
};
};
Действиеотправил правильно, Журнал в порядке, он отображает то, что я хочу.
Но в инспекторе избыточности я вижу, что в состоянии нет никаких изменений. Но на самом деле он должен измениться, поскольку вместо пустого набора у меня должен быть набор с некоторым значением (например, отображение console.log)
почему?
РЕДАКТИРОВАТЬ 1:
Я попробовал простое:
return {
...state,
selectedModelsId: 1234,
};
, но
return {
...state,
selectedModelsId: new Set(3),
};
не
РЕДАКТИРОВАТЬ 2:
const SELECT_MODELS = (state: State, action: featureAction.SelectModels) => {
console.log(new Set([...Array.from(state.selectedModelsId), ...action.payload.modelsIds]));
console.log({
...state,
selectedModelsId: new Set([...Array.from(state.selectedModelsId), ...action.payload.modelsIds])
});
return {
...state,
selectedModelsId: new Set([...Array.from(state.selectedModelsId), ...action.payload.modelsIds])
};
};
Даже в этом случае журнал корректен с selectedModelsId: Set(1) {3}
, но в прижатии есть (states are equal)
РЕДАКТИРОВАТЬ 3:
Я изменил все в массив, теперь он работает ... но почему бы не работать с набором?