У store
есть метод, называемый getState
, который вернет текущее состояние магазина.Что предотвращает изменение состояния хранилища?
Что предотвращает код где-нибудь в моей заявке от (случайно) изменяет возвращенный state
от store
?
Скажем, я называю это:
let state = store.getState();
state.someProperty = 'fun';
осуществления, который я нашел на getState
на store
объекта просто возвращает внутреннее состояние объекта, который получает перезаписаны с каждым новым действием.
const getState =() => state;
Между действиями/новыми состояниями, что предотвращает изменение кода из состояния, которое будет читать другой подписчик? В приведенном выше примере установка someProperty
на 'fun'
будет сохраняться внутри store
по адресу state
.
В то время как я, очевидно, не должен изменять состояние, простая ошибка может связывать состояние с каким-то компонентом, который (неосознанно) изменяет свои входы - возможно, на двухстороннюю привязку в угловой среде?
<app-some-component [user]="state"></app-some-component>
getState()
не должны быть реализованы как клон его state
модели?
P.S. Это не связано конкретно с Angular - вот почему я не добавил тег - чтобы больше людей не привык к Angular, чтобы ответить на вопрос.
Вы говорите, что мне нужно иметь модель, которая является непреложной (от immutable.js или т. П.), Или мне нужно заморозить мое состояние при тестировании/разработке, но не замораживать в процессе производства? –
Как я уже сказал, в самом Редксе нет ничего, что непрестанно. Даже если вы тщательно пишете код редуктора или используете неизменяемую утилиту для обновления, технически любая часть кода _could_ вызывает 'getState' и мутирует содержимое. Если вы хотите гарантировать, что этого не произойдет, вам нужно использовать что-то другое, кроме простых объектов JS, или что-то, что замерзает простые объекты, чтобы гарантировать, что код нигде не мутирует. Тем не менее, остальная часть приложения, конечно же, не должна пытаться изменять состояние в любом месте, но это случается случайно. – markerikson
Просто не могу не думать, что это плохо - склонно к несчастным случаям - угадайте, что автоматическое тестирование будет более важным, чем когда-либо ... –