Возвращает ли селектор NGRX ссылку на магазин - PullRequest
0 голосов
/ 19 сентября 2019

Я пишу угловое заявление.в котором я управляю государством с помощью приставки.У меня есть магазин, как показано ниже

export interface State {
  data {
    items: any[];
  }
}

У меня есть селектор возврата для получения элементов, как показано ниже

export const getItems = createSelector(getItemState, fromItem.getItems);

fromItem.getItems, как показано ниже =>

export const getItems = (state: State): any[] => state.items;

и в моем компоненте у меня есть подписка на селектор элементов, как показано ниже

this.store.select(getItems).subscribe((items) => {
      this.localItems = items;
}

все работает нормально, но в подписке getItems я получаю ссылку на элементы, которые хранятся в магазине.И если я обновляю какой-либо локальный элемент, он также отражается в магазине.

Я ожидал, что подписка селектора (getItems) вернет клонированную копию элементов из магазина, но он вернет ссылку.

Я что-то не так делаю или есть какой-нибудь способ получить клонированную копию предметов из магазина?

1 Ответ

0 голосов
/ 19 сентября 2019

То, что вы описываете, является правильным поведением.Мутации состояний должны происходить только в редукторах pure .

При этом способе используется исполнитель магазина, мы можем просто проверить, совпадает ли ссылка - это очень дешево.

...