簡體   English   中英

使用ngrx或ngxs時,我們是否會自動獲得對象不變性?

[英]Do we get object immutability automatically when using ngrx or ngxs?

使用NGRXNGXS時,我們是否自動獲得所有域實例的對象不變性? 我閱讀的大多數上下文似乎都表明了這一點,但也有類似“當我們將NGRX與不可變對象一起使用時...”這樣的措辭,因此只想仔細檢查一下我們是否應該不使用像immutable.js東西。除了ngrx?

不,我們不。 如果您不使用不可變庫,則傳遞的有效負載必須先在reducer(NGRX)或動作處理程序(NGXS)中手動克隆,然后再添加到狀態中。

在開發模式下工作時,NGXS確實使用不可變的對象。 請參考ngxs / store repo中的state-operations.ts文件進行驗證。

從第36行開始,並遵循以下代碼:

if (this._config.developmentMode) {
  return this.ensureStateAndActionsAreImmutable(rootStateOperations);
}

ensureStateAndActionsAreImmutabledeepFreeze() Object.freeze(value)對值進行Object.freeze(value)

因此,使用ngxs時不需要不變的,沉浸式的或任何不變的庫。

如果使用NGRX,則可能要使用ngrx-store-freeze而不是第三方庫。 這具有一種依賴關系( deep-freeze-strict ),可以確保不變性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM