169 похожих чатов

Господа, я тут недавно с ужасом обнаружил одну, на первый

взгляд очевидную (но не для меня лол) вещь.

Если в сервисе в BehaviourSubject закинуть объект, написать геттер, который отдаёт его asObservable, а потом в компоненте подисаться на этот сабжект - то ты получаешь ссылку на тот же самый объект. И если попытаться его мутировать тупым myObj.field = something, то изменяется и тот объект, который лежит в самом сервисе.

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

11 ответов

8 просмотров

а нафига его мутировать? и конечно ссылка на тот же объект, сабжект внутри ничего не меняет

Все observable и subject надо readonly объявлять

Семен Марциновський
Рофлишь

Нет. И все инжектируемые сущности тоже private readonly

Maxim Afanasev
Все observable и subject надо readonly объявлять

Ну, в целом - да, только это не решает пробелму мутации данных

Можно freeze() объект, чтобы его нельзя было мутировать, но это прям дичь какая-то Надо возвращать из стора глубокую копию объекта, чтобы пользоваться нормально structuredClone() без всяких json parse

Andrei
Ngrx так и делает

Или ngrx-data. Но кто-то из них точно)

Похожие вопросы

Обсуждают сегодня

вот список <div class="article-list"> [[DocLister? &parents=`[*id*]` &depth=`5` &dateSource=`pub_date` &showParent=`0` &tpl=`blog_item` &dateFormat=`%d.%m.%Y` &id=`blog` &tvL...
Sasha Beep
3
Добрый верчер, а стоит ли использовать lea для вычислений произвольных значений, как замена add/imul?
strewg
28
Нужна помощь c небольшой программой на Дельфи (Delphi)! Задача: воспроизведение видео из зашифрованного файла. Комментарий: я знаю, как можно легко зашифровать видеофайл и п...
Анна
2
У меня такой вопрос. Вот мне нужно сделать бинарный файл с ассемблер кода: [bits 32] [org 0x7c00] start: cli mov esp, stack_space call _main hlt section .tex...
Dmytro Parkhomenko
26
Вопрос, кто-то пользует в реальности очереди вапоровские?swift run App queues --scheduled
Keiman
21
@FAssembler не знаешь, fasm поддерживает thumb?
Александр Белокопытов
46
Опять же повторяюсь - там всё закрыто, и очень-очень сложно. Это столетние наработки. Нет смысла вообще думать об этом. Достаточно просто в голове уложить "вот есть предсказат...
КТ315
15
Фуух, победила раскраску. Ну почти) Кому что посчитать? )))
Катерина Свиридова
20
Вот сравним знания, которые требуются, чтобы знать все эти условности С компилятора, и знания, которые требуются чтобы писать программы на ассемблере. Что проще?
КТ315
23
Разве ret в NASM завершает программу?! Почему там не используется ExitProcess?
Alexey
14
Карта сайта