Запретить Angular повторное рендеринг компонентов, которые копируются из редукторов NgRx - PullRequest
1 голос
/ 31 марта 2020

Моя проблема заключается в следующем: мы должны скопировать состояние в редукторе NgRx для неизменности. Но из-за этого Angular переопределяет компоненты, если они не изменены в свойствах, они были воссозданы только оператором распространения или loda sh клоном. Я сохраняю некоторые состояния в моих компонентах, таких как счетчики, которые не хочу хранить в хранилище NgRx, но теряю их из-за повторного отображения. Я пробовал использовать функцию trackBy для директивы NgFor и различных реализаций редукторов, но они, похоже, не работают. Можете ли вы помочь мне решить проблему?

1 Ответ

1 голос
/ 31 марта 2020

вам нужно использовать запомненные селекторы (по умолчанию это делает createSelector) и изменить changeDetection компонента на ChangeDetectionStrategy.OnPush. В этом случае компонент будет перерисован только тогда, когда указатель был изменен.

Также вместо глубокого клонирования я бы предложил только изменить указатели на измененные данные.

interface State {
  ob1: Obj;
  ob2: Obj;
}
// ...
const newState = {...state, ob2: newOb2};

, который сохраняет указатель на ob1, как это было, но встряхивает изменение состояния для ob2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...