Если у меня есть список привязок todos к наблюдаемому, а затем изменить один из todos, будут ли все предметы переизданы?Переставляются ли элементы при изменении, а элемент в ngrx/store
ответ
Я обнаружил, что для плунжера, созданного с угловыми 2 и ngrx/store. В ваших веб-браузерах devtools легко увидеть, что обрабатываются только измененные элементы. Поэтому в этом отношении углы и реакции одинаковы.
"plnkr.co/edit/Hb4pJP3jGtOp6b7JubzS?p=preview"
В угловых V2 мы имеем 2 типа компоненты Stateful (Smart) и Statless. Средства (немой)
Stateful: Заботится о том, как все работает.
Statless: Заботится о том, как выглядят вещи.
ChangeDetectionStrategy:
Если вы не определен какой-либо стратегии для компонента, то ChangeDetection всегда будет «перезапуск» этот компонент. В случае стратегии OnPush он обновляет себя только в том случае, если какой-либо из входов изменяется, но этот случай работает только для таких объектов, как String, Number not for Objects или Arrays.
Так с ngrx/магазин и ES6 вы можете создать непреложным Массивы (не единственный путь) как
case ADD_TODO:
return [...state, action.payload];
case UPDATE_TODO:
return state.map(todo => todo.id === action.payload.id ? action.payload : todo);
Затем вы создадите компоненты несделанного и TODO
<todos [todos]="todosNgRx$ | async"></todos>
Этот компонент будет получить список todos и повторно отобразить второй компонент Todo.
<todo *ngFor="let todo of todos" [todo] = "todo"></todo>
Этот компонент немой, содержит только данные.
Вам необходимо указать ChangeDetectionStrategy.OnPush, поэтому обновляются только обновления в случае todo. И если вы добавите новый todo ngFor, новый компонент Todo и остальная часть списка не будут обновлены.
Надеется, что это помогает
Без кода это будет трудно, чтобы помочь вам ... – Maxime
Еще лучше, если вы можете оставить Plunkr с демо, и я определенно буду в состоянии сказать вам :) – Maxime
Если У меня был код, который я мог видеть для себя (-: Я знаю, что реагируют только на новый/измененный элемент. Но может ли Angular сделать то же самое? –